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