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


Reordering and reshaping columns in R

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to sort a dataframe by column(s) in R

我有一个这样的数据集:

1
2
3
4
5
6
7
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的函数,这样

1
2
3
4
5
6
7
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、taply等函数会重新组织数据集,但我必须承认,我并不真正了解它们之间的区别,也不真正了解如何应用于何时何地。

谢谢你的建议。


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

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

1
2
3
4
5
6
7
8
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()中包装您想要排序的变量。

1
2
3
4
5
6
7
8
9
10
> 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

如果应用程序中的速度很重要,这是实现这一点的最快方法,而且仍然可读。这里的基准:如何按列对数据帧排序?