获取面板结构(R数据表)中上面某些行的差异

获取面板结构(R数据表)中上面某些行的差异,r,datatable,R,Datatable,我想这会管用的 panel[,sum_of_past_2_years:=shift(value)+shift(value, 2),Individual] 理想情况下,答案应该是 panel[,var(c(shift(value),shift(value, 2))),Individual] # This doesn't work of course a您可以使用frollapply执行每2个值的滚动操作 a<-c(NA,NA,var(panel$value[1:2]),var(pane

我想这会管用的

panel[,sum_of_past_2_years:=shift(value)+shift(value, 2),Individual]

理想情况下,答案应该是

panel[,var(c(shift(value),shift(value, 2))),Individual]
# This doesn't work of course

a您可以使用
frollapply
执行每2个值的滚动操作

a<-c(NA,NA,var(panel$value[1:2]),var(panel$value[2:3]))
b<-c(NA,NA,var(panel$value[5:6]),var(panel$value[6:7]))
c<-c(NA,NA,var(panel$value[9:10]),var(panel$value[10:11]))
panel[,variance_past_2_years:=c(a,b,c)]
# NAs when there is no value for 2 prior years
a<-c(NA,NA,var(panel$value[1:2]),var(panel$value[2:3]))
b<-c(NA,NA,var(panel$value[5:6]),var(panel$value[6:7]))
c<-c(NA,NA,var(panel$value[9:10]),var(panel$value[10:11]))
panel[,variance_past_2_years:=c(a,b,c)]
# NAs when there is no value for 2 prior years
library(data.table)
panel[, var := frollapply(shift(value), 2, var), Individual]

#    Year Individual     value        var
# 1: 2017          A  9.416218         NA
# 2: 2018          A  8.424868         NA
# 3: 2019          A  8.743061 0.49138739
# 4: 2020          A  9.489386 0.05062333
# 5: 2017          B 10.102086         NA
# 6: 2018          B  8.674827         NA
# 7: 2019          B 10.708943 1.01853361
# 8: 2020          B 11.828768 2.06881272
# 9: 2017          C 10.124349         NA
#10: 2018          C  9.024261         NA
#11: 2019          C 10.677998 0.60509700
#12: 2020          C 10.397105 1.36742220