Seems you want to diff X, not lag it. We can either maintain the long form of the data and do it as in #1 or convert the data to "wide" form and do it as in #2 which is most convenient using zoo where we make the individual time series into zoo series, merge them and then apply diff:
Lines <- "ID Year X AB12 2000 100 AB12 2001 120 AB12 2002 140 AB12 2003 80 BL14 2000 180 BL14 2001 150 CR93 2000 45 CR93 2001 49 CR93 2002 56 CR93 2003 67 " DF <- read.table(textConnection(Lines), header = TRUE) # 1 f <- function(DF) cbind(DF[,1:2], diff = c(NA, diff(DF$X))) DF.by <- by(DF, DF$ID, f) do.call("rbind", DF.by) # 2 library(zoo) fz <- function(DF) zoo(DF$X, DF$Year) diff(do.call("merge", by(DF, DF$ID, fz)), na.pad = TRUE) For more info on zoo: library(zoo) vignette("zoo") On 6/4/07, Anup Nandialath <[EMAIL PROTECTED]> wrote: > Dear Friends, > > I have some data with three columns named ID, Year and Measure X. I need to > create a column which gives me a lag for each ID (note not a continous lag), > but a lag conditional on the id and the given year. Please find below a > sample of the data > > Input file sample > > ID Year X > > AB12 2000 100 > AB12 2001 120 > AB12 2002 140 > AB12 2003 80 > BL14 2000 180 > BL14 2001 150 > CR93 2000 45 > CR93 2001 49 > CR93 2002 56 > CR93 2003 67 > > Expected output from this data > > ID Year Xlag > AB12 2000 . > AB12 2001 20 > AB12 2002 20 > AB12 2003 -60 > BL12 2000 . > BL14 2001 -30 > CR93 2000 . > CR93 2001 5 > CR93 2002 7 > CR93 2003 9 > > Can somebody please help me with how to implement this in R. Thanks. > > Sincerely > > Anup > > > > --------------------------------- > Looking for a deal? Find great prices on flights and hotels with Yahoo! > FareChase. > [[alternative HTML version deleted]] > > ______________________________________________ > 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 > and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ 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 and provide commented, minimal, self-contained, reproducible code.