R中的重新排序和重塑列[重复]
Posted
技术标签:
【中文标题】R中的重新排序和重塑列[重复]【英文标题】:Reordering and reshaping columns in R [duplicate] 【发布时间】:2011-10-31 23:49:08 【问题描述】:可能重复:How to sort a dataframe by column(s) in R
我有一个如下所示的数据集:
x y z
1. 1 0.2
1.1 1 1.5
1.2 1 3.
1. 2 8.1
1.1 2 1.0
1.2 2 0.6
我想要的是首先将数据集组织为 x 的函数,然后按递增顺序组织为 y 的函数,这样
x y z
1. 1 0.2
1. 2 8.1
1.1 1 1.5
1.1 2 1.
1.2 1 3.
1.2 2 0.6
我知道 apply、mapply、tapply 等函数会重新组织数据集,但我必须承认我并不真正了解它们之间的区别,也不真正了解如何应用哪个以及何时应用。
感谢您的建议。
【问题讨论】:
相关问题:***.com/q/6769703/602276和***.com/q/5602525/602276 各种排序方式比较:***.com/questions/1296646/… 【参考方案1】:您可以使用order
函数对数据进行排序。不需要任何apply
家庭功能。
假设您的数据位于名为 df 的 data.frame
中:
df[order(df$x, df$y), ]
x y z
1 1.0 1 0.2
4 1.0 2 8.1
2 1.1 1 1.5
5 1.1 2 1.0
3 1.2 1 3.0
6 1.2 2 0.6
请参阅?order
以获得更多帮助。
附带说明:重塑通常是指改变 data.frame 的形状,例如将其从宽格式转换为高格式。这不是这里需要的。
【讨论】:
重新排序我的数据集的非常简单有效的方法。感谢您的快速回答和建议,让我了解 order()、reshape() 等之间的区别......【参考方案2】:您也可以为此使用plyr
中的arrange()
函数。将desc()
中的变量包裹起来,你想对另一个方向进行排序。
> library(plyr)
> dat <- head(ChickWeight)
> arrange(dat,weight,Time)
weight Time Chick Diet
1 42 0 1 1
2 51 2 1 1
3 59 4 1 1
4 64 6 1 1
5 76 8 1 1
6 93 10 1 1
如果速度在您的应用程序中很重要,这是执行此操作的最快方法,并且仍然可读。这里的基准: How to sort a dataframe by column(s)?
【讨论】:
以上是关于R中的重新排序和重塑列[重复]的主要内容,如果未能解决你的问题,请参考以下文章