【发布时间】:2021-05-31 11:55:41
【问题描述】:
我想获取每个 ID 在每列中的最大值。以吹表为例:
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)
我想合并下表,如下所示 - 每个组的最大值。
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]
非常感谢您的帮助!
【问题讨论】:
-
Summarizing multiple columns with data.table;
df[ , lapply(.SD, max), by = ID]. -
...并且不要使用
data.frame(cbind-cbind将强制转换为矩阵并将所有列转换为一个类(此处为character)。
标签: r data.table max