按r中的列对数据帧进行排序


Sorting data frames by columns in r

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to sort a dataframe by column(s) in R

我正试图按几列对data.frame进行排序

1
2
3
4
5
6
7
8
9
10
11
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"))]

但这一点都不起作用。你知道为什么吗?谢谢


使用with时,不应引用Sp1。这将始终返回1,从而返回第一行。试试这个:

1
2
3
4
5
6
7
8
9
10
> 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


您还可以尝试在doBy包中使用另一个bult-in函数:

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