Group_by (dplyr) 以一个因素作为列

Group_by (dplyr) with one factor as column

在下面的虚拟数据集中,我想创建一个汇总 table 对三个变量进行分组。到目前为止,我使用了 dplyr。 但是,我希望将 r 的值作为列名,将 x1 和 x2 值作为行名,并用 m 中的值填充相应的单元格。 有什么解决方案?

r <- rep(seq(1,10,1),10)
x1 <- rbinom(100, 1, 0.5)
x2 <- rbinom(100, 2, 0.5)
y <- rnorm(100, 10, 5)

df <- data.frame(r,x1,x2,y)

library(dplyr)

View(df %>% 
  group_by(x1,x2,r) %>% 
  summarise(m = mean(y))
)

为了获得所需的输出,您基本上必须使用 x1 和 x2 作为分组变量从长格式转换为宽格式。函数 spread() 将完成这项工作:

library(dplyr)
library(tidyr)

df %>% 
  group_by(x1,x2,r) %>% 
  summarise(m = mean(y)) %>% 
  ungroup %>% 
  spread(key = r, value = m,-x1, -x2)