在R中按列对数据框排序

3

可能重复:
如何在R中按列对数据框进行排序

我正在尝试按多个列对数据框进行排序

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"))]

然而这并没有任何作用。有什么想法吗?谢谢。

你应该使用库(plyr)和命令-arrange(df, Sp1, Sp2)。易于记忆,速度也很快。 - RHelp
2个回答

6
当您使用with时,不应将Sp1引用。这会始终返回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

2

您还可以尝试使用doBy包内的另一个内置函数:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接