[R] The opposite of "lag"

Gabor Grothendieck ggrothendieck at gmail.com
Wed Jul 21 18:51:07 CEST 2010


On Wed, Jul 21, 2010 at 12:18 PM, Dimitri Liakhovitski
<dimitri.liakhovitski at gmail.com> wrote:
> Sorry, I don't think it's working.
> the last 3 columns (on the right) of result contain the original data
> of each group.
> But there is no shift at all. I am trying to reach the following
> result for each group: The first number disappears and at the bottom
> an NA appears.
> Is it possible?
>

It works for me.  Here is the result.  As we see

- the first 3 columns are lagged ahead so that they start at 1981
  which is one year later than the original columns start,
- the second set of 3 columns are the originals so they start at 1980
- the last set of 3 columns are lagged so they start at 1979 which is
  one year before the original columns start.

> set.seed(123)
> A <- data.frame(year=rep(c(1980:1984),3), group=
+ factor(sort(rep(1:3,5))), DV=c(rnorm(15)))
> library(zoo)
> z <- read.zoo(A, index = 1, split = "group", frequency = 1)
> z <- as.zooreg(z) ###
> lag(z, c(-1, 0, 1))
        X1.lag.1   X2.lag.1   X3.lag.1     X1.lag0    X2.lag0    X3.lag0
1979          NA         NA         NA          NA         NA         NA
1980          NA         NA         NA -0.56047565  1.7150650  1.2240818
1981 -0.56047565  1.7150650  1.2240818 -0.23017749  0.4609162  0.3598138
1982 -0.23017749  0.4609162  0.3598138  1.55870831 -1.2650612  0.4007715
1983  1.55870831 -1.2650612  0.4007715  0.07050839 -0.6868529  0.1106827
1984  0.07050839 -0.6868529  0.1106827  0.12928774 -0.4456620 -0.5558411
1985  0.12928774 -0.4456620 -0.5558411          NA         NA         NA
         X1.lag1    X2.lag1    X3.lag1
1979 -0.56047565  1.7150650  1.2240818
1980 -0.23017749  0.4609162  0.3598138
1981  1.55870831 -1.2650612  0.4007715
1982  0.07050839 -0.6868529  0.1106827
1983  0.12928774 -0.4456620 -0.5558411
1984          NA         NA         NA
1985          NA         NA         NA



More information about the R-help mailing list