[R] How to make a lagged variable in panel data?

From: Ila Patnaik <ila_at_mayin.org>
Date: Sat 13 Aug 2005 - 22:31:23 EST


Suppose we observe N individuals, for each of which we have a time-series. How do we correctly create a lagged value of the time-series variable?

As an example, suppose I create:

  A <- data.frame(year=rep(c(1980:1984),3),

                  person= factor(sort(rep(1:3,5))),
                  wage=c(rnorm(15)))


> A
year person wage 1 1980 1 0.17923212 2 1981 1 0.25610292 3 1982 1 0.50833655 4 1983 1 -0.42448395 5 1984 1 0.49233532 6 1980 2 -0.49928025 7 1981 2 0.06842660 8 1982 2 0.65677575 9 1983 2 0.15947390 10 1984 2 -0.46585116 11 1980 3 -0.29052635 12 1981 3 -0.27109203 13 1982 3 -0.76168164 14 1983 3 0.02294361 15 1984 3 2.22828032

What I'd like to do is to make a lagged wage for each person, i.e., I should get an additional variable A$wage.lag1:

> A

     year person        wage       wage.lag1
  1  1980      1  0.17923212             NA
  2  1981      1  0.25610292     0.17923212
  3  1982      1  0.50833655     0.25610292
  4  1983      1 -0.42448395     0.50833655
  5  1984      1  0.49233532    -0.42448395
  6  1980      2 -0.49928025             NA
  7  1981      2  0.06842660    -0.49928025
  8  1982      2  0.65677575     0.06842660
  9  1983      2  0.15947390     0.65677575
  10 1984      2 -0.46585116     0.15947390
  11 1980      3 -0.29052635             NA
  12 1981      3 -0.27109203    -0.29052635
  13 1982      3 -0.76168164    -0.27109203
  14 1983      3  0.02294361    -0.76168164
  15 1984      3  2.22828032     0.02294361

I could think of writing code which does this "by hand", but it struck me as a fundamental requirement when dealing with panel data, so perhaps there is high level support for such a task?

I have been trying to learn groupedData objects and the tools that go with them, but I didn't get a hint about how I would address such a task.

                -Ila

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Sat Aug 13 22:38:12 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:39:48 EST