Return 每列最大值,按 ID 分组

Return max for each column, grouped by ID

我想获取每个 ID 的每列中的最大值。以table一击为例:

ID <-c("A","A","A","A","A","B","B","C","C","C")
col1 <-c(1,2,3,4,5,1,2,1,2,3)
col2 <-c(2,4,9,8,10,2,4,2,4,6)
df <-data.frame(ID, col1, col2)

我想合并 table,如下所示 - 每个组的最大值。

ID      col1      col2
A       5         10       
B       2         4
C       3         6

因为我将把它应用到一个数据框列表,每个数据框都有不确定数量的列和不同的列名,我不能有对列名的具体引用,而是应用于除 ID 之外的所有列.

我知道以下代码适用于最多一个变量,但不能扩展为多个:

require(data.table)
dt <- as.data.table(df)
dt[, .SD[which.max(col1)], by=ID]

非常感谢您的帮助!

总而言之,tidyverse更灵活,尤其是across

library(dplyr)
df %>%
   group_by(ID) %>%
   summarise(across(everything(), max))

-输出

# A tibble: 3 x 3
#  ID     col1  col2
#* <chr> <dbl> <dbl>
#1 A         5    10
#2 B         2     4
#3 C         3     6

数据

 df <- data.frame(ID, col1, col2)