重新排序和重塑R中的列

可能重复:
如何按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

我知道应用,mapply,tapply等函数可以重新组织数据集,但我必须承认,我并不真正了解它们之间的差异,也没有真正理解如何应用哪个和哪些时间。

谢谢你的建议。


您可以使用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的形状,例如将其从宽转换为高格式。 这不是这里所要求的。


你也可以在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

如果速度在您的应用程序中很重要,这是最快速的方法,它仍然可读。 这里的基准:如何按列排序数据框?

链接地址: http://www.djcxy.com/p/70843.html

上一篇: Reordering and reshaping columns in R

下一篇: Function reorder in R and ordering values