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

R语言合并两个data.table并计算过去4季度滚动股息累计和

问题背景

现有两个data.table结构的数据集:

  • div_dt:2019-2021年某上市公司的股息派发记录,包含pay_date(派息日期)、cash_amount(派现金额)两个字段
  • calendar_dt:该股票同期的完整日历表,原本仅包含current_date(当前统计日期)字段,后续新增div_start_date(股息累计的追溯起始日期,为当前日期往前推365天,对应过去4个季度的统计周期)字段

注:你提供的div_start_date构造代码存在字段名笔误,原代码中的date应为current_date,正确构造代码为calendar_dt[, div_start_date := current_date - 365]

需求说明

合并两个数据表,为calendar_dt的每一行新增字段,统计对应current_date过去4个季度的累计派息总额,要求给出内存高效的单行实现代码。

实现方案

采用data.table原生非等连接+按行分组聚合逻辑实现,内存效率远高于先全量合并再聚合的方案,避免生成冗余中间数据,符合单行实现要求:

calendar_dt[, sum_4q_div := div_dt[.SD, on = .(pay_date >= div_start_date, pay_date <= current_date), sum(cash_amount, na.rm = TRUE), by = .EACHI]$V1]
逻辑说明
  • 用.SD代指当前calendar_dt的全量行作为左连接主表
  • on参数定义非等连接条件:派息日期落在「追溯起始日期-当前统计日期」的统计区间内
  • by = .EACHI指定按左表的每一行单独分组聚合,直接计算对应区间的派现金额总和
  • 最后将聚合结果赋值给calendar_dt的新字段sum_4q_div即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:24:02