0

我有一个每月股票收益的数据表,每一行都有一个股票 ID 字符串 CUSIP,以数字形式返回 RET,数据时间戳为日期。

例如:

returns =

 CUSIP     RET        Date
"1000"   -0.11  2001-01-15
"1000"    0.05  2001-02-18

我想将日期设置为月底,并减去一个月的日期,以便 RET 有效地滞后一个月,例如:

returns_modified =

 CUSIP     RET        Date
"1000"   -0.11  2000-12-31
"1000"    0.05  2001-01-31

我需要这个的原因是我可以将滞后回报数据与另一个包含有关股票的月度信息的 data.table 合并。我一直在做的方法是添加两列,月份和年份,其中包含时间戳的月份和年份。然后使用整数算术移动列。因此,将 dat 向后移动 x:

Month = (Year*12+(Month-1)-x) %% 12 + 1
Year  = floor(Year*12+(Month-1)-x)

通过这两列合并是可行的,但它非常不雅。有一个简单的解决方案吗?

4

1 回答 1

1

这是你想要的吗?

d = as.Date('2001-01-15')
d - as.POSIXlt(d)$mday
#[1] "2000-12-31"
于 2013-06-03T21:51:56.950 回答