Передайте вектор имен столбцов в dplyr :: Sumumize, чтобы получить max / min. - PullRequest
0 голосов
/ 29 ноября 2018

Я хотел бы сделать это:

data %>%
    group_by(ID) %>%
    summarize(maxVal = max(Val),
              maxVal2 = max(Val2))

Однако у меня есть много столбцов, которые я хотел бы получить Макс.Я хотел бы передать вектор столбцов, как это:

cols <- c("Val", "Val2")
data %>%
    group_by(ID) %>%
    summarize(max(cols))

Однако это не работает.Как мне исправить синтаксис, чтобы сделать это легко?

1 Ответ

0 голосов
/ 29 ноября 2018

Если мы хотим иметь префиксное имя после summarize в нескольких столбцах, тогда используйте rename_at

library(tidyverse)
data %>%
   group_by(ID) %>%
   summarise_at(vars(cols), max) %>%
   rename_at(-1, ~ paste0('max', .))

. В качестве воспроизводимого примера использовали data(mtcars)

mtcars %>% 
  group_by(gear) %>% 
  summarise_at(vars(mpg, disp), max) %>% 
  rename_at(-1, ~ paste0('max', .))
# A tibble: 3 x 3
#   gear maxmpg maxdisp
#  <dbl>  <dbl>   <dbl>
#1     3   21.5    472 
#2     4   33.9    168.
#3     5   30.4    351 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...