我有一个包含列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
...
答案 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)