带括号的动态 groupby 函数

Dynamic groupby function with brackets

df1 <- mtcars %>%
    group_by(gear) %>%
    summarise(Mittelwert = mean(mpg, na.rm = TRUE))
df1

df2 <- mtcars %>%
    group_by(mtcars[[10]]) %>%
    summarise(Mittelwert = mean(mtcars[[1]]), na.rm = TRUE)
df2

最后的代码给出了整个data.frame的平均值。由于此代码在循环中使用,因此我需要使用括号。你能帮我得到一个有效结果的动态代码吗?

如果我们想避免使用名称,我们可以使用group_by_atsummarise_at来指定列号。

library(dplyr)
mtcars %>%
  group_by_at(10) %>%
  summarise_at(1, mean, na.rm = TRUE)

# A tibble: 3 x 2
#   gear   mpg
#  <dbl> <dbl>
#1  3.00  16.1
#2  4.00  24.5
#3  5.00  21.4

相当于

mtcars %>%
    group_by(gear) %>%
    summarise(Mittelwert = mean(mpg, na.rm = TRUE))

#   gear Mittelwert
#  <dbl>      <dbl>
#1  3.00       16.1
#2  4.00       24.5
#3  5.00       21.4