ID <- c(1,1,1,2,2,2,2,3,3,3)
Value <- c(2,3,5,2,5,8,17,3,5,5)
Event <- c(1,1,2,1,2,1,2,2,2,2)
group <- data.frame(Subject=ID, pt=Value, Event=Event)
# 将数据从data frame格式转还成data.table格式
library(data.table)
group <- as.data.table(group)
最值在多行出现,容忍取出多行时
group[group[, .I[pt == max(pt)], 。(Subject,Event)]$V1]
如果最值在多行同时存在,但是要求只取出一行:
group[group[, .I[which.max(pt)], by=c("Subject","Event")]$V1]
p.s: by - c(“列名1”,“列名2”) 的效果和 .(“列名1”,“列名2”) 是一样的,详见知乎 data.table包整理贴
Reference: StackOverflow

使用data.table在R中进行数据处理时,如何按照多个列进行分组,并找出每个组内的最大值。当最大值在多行中出现时,如何仅保留一行。参考StackOverflow上的问题和解决方案。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



