r - 在 R 中运行求和时合并两个 data.tables
问题描述
我有一个 data.table 代表公司从 2019 年到 2021 年支付的股息。
library(data.table)
div_dt <- structure(list(pay_date = structure(c(18885L, 18793L, 18701L,
18611L, 18520L, 18428L, 18337L, 18246L, 18155L, 18064L, 17910L
), class = c("IDate", "Date")), cash_amount = c(0.09, 0.09, 0.09,
0.09, 0.08, 0.07, 0.07, 0.05, 0.04, 0.04, 0.07)), row.names = c(NA,
-11L), class = c("data.table", "data.frame"))
下表显示了该股票在 2019 年至 2021 年之间的所有日历日。
calendar_dt = data.table(current_date = seq(min(div_dt$pay_date), max(div_dt$pay_date), by="days"))
我想显示该股票在任何给定日期支付的最近 4 个季度的股息总和。为了解决这个问题,我添加了一个新列div_start_date
,calendar_dt
它显示了必须将股息添加到给定日期的开始日期表格current_date
。
calendar_dt[, div_start_date := date - 365]
有人可以告诉我如何合并这些表格,以便对于 中的每个日历日calendar_dt
,过去 4 个季度的股息总和都显示在新列中吗?
单线和内存高效的解决方案将受到赞赏。
解决方案
这会起作用(不是最有效的加入,但会完成工作)
# set keys
setkey(calendar_dt, current_date)
setkey(div_dt, pay_date)
# join
calendar_dt[calendar_dt,
cast_last_365 := div_dt[pay_date %between% c(current_date - 365, current_date),
sum(cash_amount)],
by = .EACHI]
推荐阅读
- mongodb - 如何为 mongdb 数据库创建平面文件以及如何在弹性搜索和 kibana 中使用该平面文件来查询数据?
- react-native - React Native 更新多个子组件状态
- mysql - 需要一种仅返回具有特定列条目的数据的方法
- python - 如何在基于 gpgme 的 Python 脚本中防止密码缓存?
- android - ViewModel 似乎无法观察 MutableLiveData
- c++ - Qt C++ macOS 问题。我正在使用函数 .find("a word") 在多集中搜索单词,它适用于 windows 但不适用于 mac
- javascript - .d.ts 文件中的意外标识符
- javascript - 为什么在使用“mammoth”转换简单的 .docx 文件时没有出现此类文件错误?
- python - 如何删除一些复选框并使用单个按钮创建另一个复选框?
- visual-c++ - 我可以使用两个以上的 istream 重载运算符吗?