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

求基于数据框q向量分组的p向量滞后累积求和生成r向量的R代码

解决方案:按分组生成滞后累积求和向量r

针对你需要基于q分组,对p做滞后累积求和生成r的需求,这里提供几种高效的实现方案,替代生成多个滞后向量的繁琐方法:

方法1:使用dplyr(tidyverse风格)

通过分组后先做累积求和,再对结果做滞后处理,默认补0:

library(dplyr)

# 假设数据框t已按q排序
t <- t %>%
  group_by(q) %>%
  mutate(r_new = lag(cumsum(p), default = 0)) %>%
  ungroup()

# 验证结果
all.equal(t$r, t$r_new) # 返回TRUE表示结果一致

方法2:使用data.table(适合大数据场景)

data.table的分组操作效率更高,语法简洁:

library(data.table)

setDT(t)
t[, r_new := shift(cumsum(p), fill = 0), by = q]

# 验证结果
all.equal(t$r, t$r_new)

方法3:基础R实现(无需额外包)

利用ave函数完成分组计算,手动构造滞后累积和:

t$r_new <- ave(t$p, t$q, FUN = function(x) {
  if (length(x) == 1) {
    0
  } else {
    c(0, cumsum(x[-length(x)]))
  }
})

# 验证结果
all.equal(t$r, t$r_new)

这三种方法都能直接得到目标向量r,核心逻辑都是组内先累积求和,再将结果滞后一位,首个元素补0,避免了生成多个滞后向量的冗余操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:22:42