[英]Calculate lagged variable in unbalanced time series data.table
如何在不平衡的時間序列表(時間間隔不均勻)中創建滯后變量? 從數據表-
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,但很難找到。
這是從這里 Arun的評論復制粘貼
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"]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.