计算不平衡时间序列data.table中的滞后变量

时间:2017-05-17 18:03:26

标签: r data.table time-series

如何在不平衡时间序列表中创建滞后变量(时间间隔不均匀)? 从数据表 -

ts = data.table(time=c(10,15,22,25,28),value=c(7,2,14,22,11), key="time")

如何按value_lagged创建value的滞后变量time-5

time value value_lagged
10 7 NA
15 2 7
22 14 2
25 22 2
28 11 14

我通常的解决方案是创建一个巨大的交叉连接表,然后使用' by' +' min'回到初始状态,但这不适用于1M表。

这个问题在这里有一个答案 - https://stackoverflow.com/a/36754846/1317325但很难找到。

1 个答案:

答案 0 :(得分:0)

这是来自Arun的here

评论的复制品
ts[, value_lagged := ts[.(time=time-5), value, roll=+Inf, rollends=TRUE, mult="first", on="time"]]

对于LEAD,你可以改变标志 -

ts[, value_lead := ts[.(time=time+5), value, roll=-Inf, rollends=TRUE, mult="first", on="time"]]