按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基于其他数据框中的列对数据框中的列进行重复数据删除