将列名向量传递给 dplyr::summarize 以获得 max/min
Pass a vector of column names into dplyr::summarize to get max/min
我想这样做:
data %>%
group_by(ID) %>%
summarize(maxVal = max(Val),
maxVal2 = max(Val2))
但是,我有很多列我想得到最大值。我想传入这样的列向量:
cols <- c("Val", "Val2")
data %>%
group_by(ID) %>%
summarize(max(cols))
但是,这不起作用。如何修复语法以轻松执行此操作?
如果我们想在多列中的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
我想这样做:
data %>%
group_by(ID) %>%
summarize(maxVal = max(Val),
maxVal2 = max(Val2))
但是,我有很多列我想得到最大值。我想传入这样的列向量:
cols <- c("Val", "Val2")
data %>%
group_by(ID) %>%
summarize(max(cols))
但是,这不起作用。如何修复语法以轻松执行此操作?
如果我们想在多列中的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