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)
我想获取每个 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)