按r中的列对数据帧进行排序[重复]

Posted

技术标签:

【中文标题】按r中的列对数据帧进行排序[重复]【英文标题】:Sorting data frames by columns in r [duplicate] 【发布时间】:2012-07-20 22:39:09 【问题描述】:

可能重复: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"))]

但是这什么也没做。任何想法为什么?谢谢

【问题讨论】:

您应该使用 library(plyr) 和命令 -arrange(df, Sp1, Sp2) 。易于记忆,速度也很快。 【参考方案1】:

您也可以尝试在doBy 包中使用另一个内置函数:

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于按r中的列对数据帧进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据基于其他列的列对数据框进行排序[重复]

MySQL - 使用不在列表中的列对 Group By 语句排序 [重复]

Spark基于其他数据框中的列对数据框中的列进行重复数据删除

可以使用 hbase-spark 连接器按性能良好的列对 hbase 行进行排序吗?

在R中的数据帧中动态地重新排序列

基于多个列对包含numpy文本数组中的数字的列进行排序