重新排序和重新整理R中的列

时间:2011-08-22 09:05:36

标签: r

  

可能重复:
  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等函数会重新组织数据集但我必须承认我并不真正理解它们之间的差异,也不知道如何应用它们以及何时应用。

感谢您的建议。

2 个答案:

答案 0 :(得分:6)

您可以使用order功能订购数据。不需要任何apply家庭功能。

假设您的数据位于data.frame,名为df:

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

答案 1 :(得分:3)

您也可以使用arrange()中的plyr功能。将变量包装在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)?