Динамическая групповая функция с квадратными скобками - PullRequest
0 голосов
/ 24 мая 2018
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 голосов
/ 24 мая 2018

Мы можем использовать group_by_at и summarise_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
...