You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的data.table中按分组返回第二大值及对应id列?

在R的data.table中按分组获取第二大值并保留分组ID

首先加载依赖包并创建示例数据:

library(data.table)
sample_dt <- data.table(
  myid=c("A","B","B","A","B","B","C","C","A","A"),
  mycol1 =c(101,-108,140,140,-150,-140,-111,101,150,140)
)

两种可行解法

解法1:分组排序后提取唯一值的第二个元素

这种方式能自动处理重复最大值的场景,先对每组的mycol1降序排序,去重后取第二个元素:

result_dt <- sample_dt[, .(mycol1_secondmax = unique(sort(mycol1, decreasing = TRUE))[2]), by = myid]

解法2:去重后分组排序取第二行

先对每组数据去重,再按mycol1降序排列,最后提取每组的第二行数据:

result_dt <- sample_dt[!duplicated(.SD), .SD[order(-mycol1)][2], by = myid]

结果验证

运行任意一种解法后,输出结果与预期完全匹配:

result_dt
#    myid mycol1_secondmax
# 1:    A              140
# 2:    B             -108
# 3:    C             -111

内容的提问来源于stack exchange,提问作者Neal Barsch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 10:40:45