关于将一个或多个组(例如Means multiple columns by multiple groups)的多个变量汇总在一起,存在许多问题和答案。我不认为这是重复的。
这就是我要执行的操作:我想通过Displacement
计算4个变量的平均值,然后通过Horsepower
计算这三个变量的平均值,依此类推。我不想想同时按vs
,am
,gear
和carb
分组(即,我并不是在简单地寻找mydata %>% group_by(vs, am, gear, and carb) %>% summarise_if(...)
。
如何通过Displacement
计算一组变量的均值,然后然后通过Horsepower
等计算同一组变量的均值,等等,然后并排放置在桌子上?
我试图提出一个可重复的例子,但没有。这是mtcars
的小标题,显示了我最终要寻找的内容(数据已组成):
tibble(Item = c("vs", "am" ,"gear", "carb"),
"Displacement (mean)" = c(2.4, 1.4, 5.5, 1.3),
"Horsepower (mean)" = c(155, 175, 300, 200))
答案 0 :(得分:4)
也许使用purrr::map
和某些rlang
语法是这样的吗?
grps <- list("cyl", "vs")
map(setNames(grps, unlist(grps)), function(x)
mtcars %>%
group_by(!!rlang::sym(x)) %>%
summarise(mean.mpg = mean(mpg), mean.disp = mean(disp)) %>%
rename(id.val = 1)) %>%
bind_rows(.id = "id")
## A tibble: 5 x 4
# id id.val mean.mpg mean.disp
# <chr> <dbl> <dbl> <dbl>
#1 cyl 4. 26.7 105.
#2 cyl 6. 19.7 183.
#3 cyl 8. 15.1 353.
#4 vs 0. 16.6 307.
#5 vs 1. 24.6 132.
答案 1 :(得分:1)
如此少的分组,为什么不一次将每个均值均设为一个:
out1 <- mydata %>% group_by(Var1) %>%
summarise(mean_1a = mean(var_a), mean_1b = mean(var_b))
out2 <- mydata %>% group_by(Var2) %>%
summarise(mean_2a = mean(var_a), mean_2b = mean(var_b))
out3 <- mydata %>% group_by(Var3) %>%
summarise(mean_3a = mean(var_a), mean_3b = mean(var_b))
如果并排放置结果是有意义的,则可以使用以下方法:
result <- cbind(out1, out2, out3)