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

R语言data.table按sub分组计算逐行重置的滚动百分比方法

解决方法

核心逻辑

你需要用到data.table的内置分组计算语法,指定by = sub即可实现分组切换时自动重置计算逻辑。你要的滚动占比本质是组内到当前行为止的n累计和 / 组内到当前行为止的总行数。

实现代码

# 按sub分组计算滚动占比
df[, rolling_percentage := round(cumsum(n) / (1:.N), 2), by = sub]

代码解释

  • by = sub:声明所有计算按sub字段分组独立执行,sub值变化后计算逻辑自动重置
  • cumsum(n):计算每个分组内从第一行到当前行的n列累计和
  • 1:.N:.N是data.table的内置变量,代表当前分组的总行数,1:.N生成从1到当前行号的序列,对应到当前行为止的总记录数
  • round(..., 2):将结果保留两位小数,和你给出的示例输出格式匹配,不需要保留小数可以删除该函数。

运行上述代码后输出的结果和你预期的完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:27:02