拿这个样本变量
df <- data.frame(month=rep(1:3,2),
student=rep(c("Amy", "Bob"), each=3),
A=c(9, 7, 6, 8, 6, 9),
B=c(6, 7, 8, 5, 6, 7))
我可以使用spread
中的tidyr
将其更改为宽屏格式。
> df[, -4] %>% spread(student, A)
month Amy Bob
1 1 9 8
2 2 7 6
3 3 6 9
但是我如何传播两个值,例如同时A
和B
,输出类似于
month Amy.A Bob.A Amy.B Bob.B
1 1 9 8 6 5
2 2 7 6 7 6
3 3 6 9 8 7
答案 0 :(得分:155)
使用e.preventDefault();
data.table
或可能的library(data.table) ## v >= 1.9.6
dcast(setDT(df), month ~ student, value.var = c("A", "B"))
# month Amy_A Bob_A Amy_B Bob_B
# 1: 1 9 8 6 5
# 2: 2 7 6 7 6
# 3: 3 6 9 8 7
解决方案
tidyr