滞后R中的“循环”变量

时间:2013-12-08 03:41:17

标签: r cycle lag

所以我刚收到一个数据集,其中数据框的一列是“循环的”。这一栏实际上是一个多年的循环(在我的例子中,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

1 个答案:

答案 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)]) )