所以我刚收到一个数据集,其中数据框的一列是“循环的”。这一栏实际上是一个多年的循环(在我的例子中,1984-2007)。在另一栏中,每年都有相应的美元金额(实际上是“资金水平”)。我的工作是为这些资金水平创建一个滞后变量。但这就是诀窍:每年周期重新开始,一个新的“变量”已经开始。因此,我正在寻找的滞后变量不仅仅是整个资金栏的倒退。相反,我需要为数据的每个子周期创建资金滞后。更具体地说,我的数据看起来有点像这样:
X Y
1 7
2 8
3 9
1 4
2 6
3 5
1 2
2 4
3 3
我需要它看起来像这样:
X Y
1 NA
2 7
3 8
1 NA
2 4
3 6
1 NA
2 2
3 4
我该怎么做呢?非常感谢你的帮助!
-JMC
答案 0 :(得分:2)
这应该有效。 (我经常忘记将FUN参数命名为ave
,然后用一个神秘的错误消息抱怨。)
#Wrong dfrm$Y <- ave( dfrm$Y, dfrm$X, FUN=function(x) c(NA, x) )
缺少适当的分组因子来标记不同类别的时间序列,我决定提示X == 1:
dfrm$Y <- ave( dfrm$Y, cumsum(dfrm$X==1), FUN=function(x) c(NA, x[-length(x)]) )