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)
在下面的虚拟数据集中,我想创建一个汇总 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)