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

在data.table中统计分组内等于最大值的记录数

在data.table中统计分组内等于最大值的行数

你可以通过data.table的分组操作直接实现需求,以下是两种可行方案:

方案1:基于已生成的maxsize列统计

如果你需要保留maxsize列,在现有代码基础上新增计数列即可:

set.seed(5)
z <- data.table( data.frame(
    group=( sample( letters[1:5], 25,  replace=T) ),
    size=( sample( 1:5, 25,  replace=T) )))

z <- z[ order( group, size ), ]

# 生成分组最大值列
z[ , maxsize := max(size), by = .(group)]
# 新增列统计等于最大值的行数
z[ , count_max := sum(size == maxsize), by = .(group)]

方案2:一步到位(无需单独存最大值列)

如果不需要保留maxsize列,可以直接在分组内计算最大值并统计行数,更高效:

set.seed(5)
z <- data.table( data.frame(
    group=( sample( letters[1:5], 25,  replace=T) ),
    size=( sample( 1:5, 25,  replace=T) )))

z <- z[ order( group, size ), ]

# 直接新增计数列,一步完成最大值计算与统计
z[ , count_max := sum(size == max(size)), by = .(group)]

结果说明

执行后count_max列会展示每个分组内等于最大值的行数:

  • a组对应值为2(2条观测值等于最大值3)
  • b组对应值为4(4条观测值等于最大值5)
  • c组对应值为2(2条观测值等于最大值5)
    以此类推。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 22:42:07