这是一个非常简单的问题,但我一直无法找到明确的答案,所以我想我会问它。我使用plm
包来处理面板数据。我正在尝试使用该lag
函数来及时滞后变量 FORWARD(默认是检索上一时期的值,我想要来自 NEXT 的值)。我发现了一些旧文章/问题(大约 2009 年)表明这可以通过k=-1
用作参数来实现。但是,当我尝试这样做时,我得到一个错误。
示例代码:
library(plm)
df<-as.data.frame(matrix(c(1,1,1,2,2,3,20101231,20111231,20121231,20111231,20121231,20121231,50,60,70,120,130,210),nrow=6,ncol=3))
names(df)<-c("individual","date","data")
df$date<-as.Date(as.character(df$date),format="%Y%m%d")
df.plm<-pdata.frame(df,index=c("individual","date"))
滞后:
lag(df.plm$data,0)
##returns
1-2010-12-31 1-2011-12-31 1-2012-12-31 2-2011-12-31 2-2012-12-31 3-2012-12-31
50 60 70 120 130 210
lag(df.plm$data,1)
##returns
1-2010-12-31 1-2011-12-31 1-2012-12-31 2-2011-12-31 2-2012-12-31 3-2012-12-31
NA 50 60 NA 120 NA
lag(df.plm$data,-1)
##returns
Error in rep(1, ak) : invalid 'times' argument
我还读过它plm.data
已经替换pdata.frame
了plm
. 但是,plm.data
似乎根本不适用于该lag
功能:
df.plm<-plm.data(df,indexes=c("individual","date"))
lag(df.plm$data,1)
##returns
[1] 50 60 70 120 130 210
attr(,"tsp")
[1] 0 5 1
我将不胜感激任何帮助。如果有人对用于滞后的包装有其他建议,我会全力以赴。但是,我确实喜欢它,plm
因为它会自动处理多个个体之间的滞后并跳过时间序列中的空白。