Group_by(dplyr),其中一个因素作为列

时间:2019-01-24 17:26:44

标签: r dplyr grouping summarization

在下面的虚拟数据集中,我想创建一个汇总表,将三个变量分组。到目前为止,我使用了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))
)

1 个答案:

答案 0 :(得分:1)

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

library(dplyr)
library(tidyr)

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