首页 文章

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

提问于
浏览
0

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

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

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

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

    这是来自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"]]
    

相关问题