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

时间:2012-07-22 11:32:06

标签: r

  

可能重复:
  How to sort a dataframe by column(s) in R

我正在尝试按几列排序data.frame

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"))]
然而,这没有任何作用。有什么想法吗?感谢

2 个答案:

答案 0 :(得分:6)

使用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

答案 1 :(得分:2)

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

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