获取面板结构(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