使用plyr制作2d摘要表

时间:2016-01-30 16:52:12

标签: r plyr

我有一个包含列ID,分数和平均年龄的数据集,使用ddply(),我得到下表

ddply(data, .(id, score), summarize, group_mean = round(mean(avg_age), 1))

       id    score group_mean
1     101        0       61.8
2     101        5       70.3
3     101       10       62.2
4       2        0       41.0
5       2        5       40.4
6       2       10       44.5
7      23        0       52.0
8      23        5       52.6
9      25        0       74.5
10     25        5       55.2
11     25       10       48.0
12     28        0       53.4
13     28        5       49.5
14      3        0       41.3
15      3        5       47.8
16      3       10       46.6
17      4        0       53.3
18      4        5       54.2
19      4       10       55.3
20      X        0       72.0
21      X        5       57.1
22      X       10       53.4

如果我希望表格看起来像一个数据透视表,其中行作为id和列作为分数,我会怎么做?即,

        0      5     10
101    61.8    70.3  62.2
2      41.0    40.4  44.5
...

1 个答案:

答案 0 :(得分:0)

我们可以使用spread中的tidyr。如果out是从summarize输出的ddply获得的结果

library(tidyr)
spread(out, score, group_mean)

acast来自reshape2

library(reshape2)
acast(out, id~score, value.var='group_mean')

或使用base R

xtabs(group_mean~id+score, out)