2012-07-22 117 views
2

可能重複:
How to sort a dataframe by column(s) in Rr中按列排序的數據幀

我想通過一些列

df<-data.frame("Sp1"=c(7,4,2),"Sp2"=c(6,2,1)) 
row.names(df)<-c("A01","A02","A03") 

    Sp1 Sp2 
A01 7 6 
A02 4 2 
A03 2 1 

#I am using  

df[with(df, order("Sp1"))] 

然而,這確實給排序data.frame沒有。任何想法爲什麼?謝謝

+0

您應該使用庫(plyr)和命令 - 安排(DF,SP1,SP2 )。易於記憶,速度也很快。 – RHelp 2014-03-19 12:04:06

回答

5

Sp1當您使用with時不應引用。這總是會返回1,因此只是返回您的第一行。試試這個:

> df[order(df$Sp1),] 
    Sp1 Sp2 
A03 2 1 
A02 4 2 
A01 7 6 
> df[with(df, order(Sp1)), ] 
    Sp1 Sp2 
A03 2 1 
A02 4 2 
A01 7 6 
+0

謝謝你 – Elizabeth 2012-07-22 12:07:10

2

您也可以嘗試doBy包中使用另一個bult的函數:

# install.packages('doBy') 
library(doBy) 
orderBy(Sp1~Sp2, data=df) 
    Sp1 Sp2 
A03 2 1 
A02 4 2 
A01 7 6