【发布时间】:2018-03-09 12:30:53
【问题描述】:
我的问题是我有每月变量 TICKER 名称、RETURN 和日期月份的股票数据。我想计算前 1 个月的回报,所以我会在 data.table 中使用带有潜在客户的 shift() 函数。
以我的数据为例,这个data.table叫做A。
date.mth TICKER RETURN
201501 ABC 1
201501 DEF 2
201501 GHI 3
201502 ABC 4
201502 DEF 5
201502 JKL 6
如您所见: TICKER "GHI" 在 201502 没有交易。 TICKER "JKL" 在 201501 没有交易。 在 LEAD.RETURN 中两者都不会返回
如果我使用代码:
A[, LEAD.RETURN := shift(RETURN, 1L, fill=NA, type="lead"), by=.(date.mth,TICKER)]
然后 data.table 不知道如何处理丢失的公司,所以它会返回类似:
date.mth TICKER RETURN LEAD1.RETURN
201501 ABC 1 NA
201501 DEF 2 NA
201501 GHI 3 NA
201502 ABC 4 NA
201502 DEF 5 NA
201502 JKL 6 NA
我想要的结果是,如果该公司不存在,那么在 LEAD1.RETURN 中,我将强制它为 NA:
date.mth TICKER RETURN LEAD1.RETURN
201501 ABC 1 4
201501 DEF 2 5
201501 GHI 3 NA
201502 ABC 4 NA
201502 DEF 5 NA
201502 JKL 6 NA
我知道在 STATA 中,当你让程序知道带有 TICKER 和 RETURN 的系列然后将领先系列定义为 F1.RETURN 时,它会自动领先 1 个周期。 F2.RETURN 会自动领先2个句点。
有什么办法可以在 data.table 中实现,或者我应该在上面写一个 for 循环吗?
谢谢。
【问题讨论】:
标签: r data.table