我想这样做:
data %>%
group_by(ID) %>%
summarize(maxVal = max(Val),
maxVal2 = max(Val2))
但是,我有很多列想要获得最大值。我想传递这样的列向量:
cols <- c("Val", "Val2")
data %>%
group_by(ID) %>%
summarize(max(cols))
但是,这不起作用。如何修复语法以轻松实现此目的?
答案 0 :(得分:1)
如果我们想在多列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