假設我有一個數據表。我可以創建滯後值的列:如何將數據表值減少一個以上
>x
date id val valPr
1/4/14 a 1 2
1/3/14 a 2 3
1/2/14 a 3 4
1/1/14 a 4 NA
1/4/14 b 10 20
1/3/14 b 20 30
1/2/14 b 30 40
1/1/14 b 40 NA
使用:
setDT(x)[, valPr := c(val[-1], NA), by = "id"]
有沒有辦法做同樣的事情由一個以上的週期滯後?三個例子?
它會產生這樣的:
>x
date id val valPr
1/4/14 a 1 4
1/3/14 a 2 NA
1/2/14 a 3 NA
1/1/14 a 4 NA
1/4/14 b 10 40
1/3/14 b 20 NA
1/2/14 b 30 NA
1/1/14 b 40 NA
如果你使用'dplyr'這樣的事情對你的作品。 %x%>%group_by(id)%>%mutate(valPr2 = lead(val,3))''。所以,你可能想嘗試像'setDT(x)[,valPr2:= lead(val,3),by =「id」]'? – jazzurro 2014-11-04 23:47:24
或者只是寫一個'lead'函數 - [見這裏](http://stackoverflow.com/a/24557781/559784)。也許我們應該提供滯後/領導功能,相當普遍。 – Arun 2014-11-05 01:40:59