带括号的动态groupby功能

时间:2018-05-24 08:00:54

标签: r group-by dplyr summarize

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的平均值。由于此代码用于循环,我需要使用括号。你能帮助我获得一个有效结果的动态代码吗?

1 个答案:

答案 0 :(得分:0)

如果我们想避免使用名称,我们可以使用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