#r #dplyr
#r #dplyr
Вопрос:
Раньше я мог group_by_
использовать строку имени столбца («стандартная оценка»), но теперь она устарела.
> data(mtcars)
> mtcars %>% group_by_('mpg') %>% tally() %>% head(2)
# A tibble: 2 x 2
mpg n
<dbl> <int>
1 10.4 2
2 13.3 1
Warning message:
`group_by_()` is deprecated as of dplyr 0.7.0.
Please use `group_by()` instead.
See vignette('programming') for more help
Кроме того, похоже, что группировка по нескольким столбцам никогда не работала с group_by_?
> mtcars %>% group_by_(c('mpg', 'cyl')) %>% tally() %>% head(2)
# A tibble: 2 x 2
mpg n
<dbl> <int>
1 10.4 2
2 13.3 1
Как мне получить соответствующие подсчеты, используя вектор имен столбцов?
Например, результат, который выглядит как:
> mtcars %>% group_by(mpg, cyl) %>% tally() %>% head(2)
# A tibble: 2 x 3
# Groups: mpg [2]
mpg cyl n
<dbl> <dbl> <int>
1 10.4 8 2
2 13.3 8 1
но использует c('mpg', 'cyl')
?
РЕДАКТИРОВАТЬ: используя dplyr 1.0.0.
Ответ №1:
Мы можем использовать group_by
с across
из dplyr
версии> = 1.0.0
library(dplyr)
mtcars %>%
group_by(across(all_of(c('mpg', 'cyl')))) %>%
tally() %>%
head(2)
# A tibble: 2 x 3
# Groups: mpg [2]
# mpg cyl n
# <dbl> <dbl> <int>
#1 10.4 8 2
#2 13.3 8 1
В более старых версиях используйте group_by_at
mtcars %>%
group_by_at(c('mpg', 'cyl')) %>%
tally() %>%
head(2)
# A tibble: 2 x 3
# Groups: mpg [2]
# mpg cyl n
# <dbl> <dbl> <int>
#1 10.4 8 2
#2 13.3 8 1