R中的顺序分组变量

时间:2014-01-01 13:55:04

标签: r grouping

我有一个这样的数据库:

ID    | familysize | age |  gender 
------+------------+-------------------+------------+-----+----------
1001  |     4      | 26  |     1
1001  |     4      | 38  |     2
1001  |     4      | 30  |     2
1001  |     4      | 7   |     1
1002  |     3      | 25  |     2 
1002  |     3      | 39  |     1   
1002  |     3      | 10  |     2
1003  |     5      | 60  |     1 
1003  |     5      | 50  |     2 
1003  |     5      | 26  |     2
1003  |     5      | 23  |     1 
1003  |     5      | 20  |     1 
1004  |    ....

我想按每个ID的人的年龄来订购这个数据帧,所以我使用这个命令:

library(plyr)
require(plyr)
b2<-ddply(b , "ID", function(x) head(x[order(x$ age, decreasing = TRUE), ], )) 

但是当我使用这个命令时,我失去了一些观察力。我该怎么做才能订购这个数据库?

2 个答案:

答案 0 :(得分:1)

b2 <- b[order(b$ID, -b$age), ]

应该这样做。

答案 1 :(得分:1)

arrange中的plyr功能在这里做得很好。在ID之后按age排序,但按降序排列。

arrange(b, ID, desc(age))