Basically, if you look at the A lagged below, then you see how in each group the values of A "move" downwards": and NA is added on top and the last value in each group disappears. I am trying to get the opposite: the first value in each group disappears and NA is added at the bottom. D.
set.seed(1234) A <- data.frame(year=rep(c(1980:1984),3), group= factor(sort(rep(1:3,5))), DV=c(rnorm(15))) lag.it <- function(x) { DV <- ts(x$DV, start = x$year[1]) idx <- seq(length = length(DV)) DVs <- cbind(DV, lag(DV, -1))[idx,] out<-cbind(x, DVs[,2]) # wages[,2] names(out)[length(out)]<-"DV.lag" return(out) } A A.lagged <- do.call("rbind", by(A, A$group, lag.it)) A.lagged On Wed, Jul 21, 2010 at 12:18 PM, Dimitri Liakhovitski <dimitri.liakhovit...@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? > > On Wed, Jul 21, 2010 at 12:12 PM, Dimitri Liakhovitski > <dimitri.liakhovit...@gmail.com> wrote: >> Never mind- I figured it out: >> >> A >> library(zoo) >> z <- read.zoo(A, index = 1, split = "group", frequency = 1) >> z <- as.zooreg(z) ### >> result<-lag(z, c(-1, 0, 1)) >> A >> result >> >> Thank you very much! >> >> On Wed, Jul 21, 2010 at 12:08 PM, Dimitri Liakhovitski >> <dimitri.liakhovit...@gmail.com> wrote: >>> Thank you, Gabor, but sorry - what is the exact order of those rows again? >>> Thank you! >>> Dimitri >>> >>> On Wed, Jul 21, 2010 at 11:59 AM, Gabor Grothendieck >>> <ggrothendi...@gmail.com> wrote: >>>> On Wed, Jul 21, 2010 at 10:50 AM, Gabor Grothendieck >>>> <ggrothendi...@gmail.com> wrote: >>>>> On Wed, Jul 21, 2010 at 10:14 AM, Dimitri Liakhovitski >>>>> <dimitri.liakhovit...@gmail.com> wrote: >>>>>> Hello! >>>>>> >>>>>> I have a data frame A (below) with a grouping factor (group). I take >>>>>> my DV and create the new, lagged DV by applying the function lag.it >>>>>> (below). It works fine. >>>>>> >>>>>> A <- data.frame(year=rep(c(1980:1984),3), group= >>>>>> factor(sort(rep(1:3,5))), DV=c(rnorm(15))) >>>>>> lag.it <- function(x) { >>>>>> DV <- ts(x$DV, start = x$year[1]) >>>>>> idx <- seq(length = length(DV)) >>>>>> DVs <- cbind(DV, lag(DV, -1))[idx,] >>>>>> out<-cbind(x, DVs[,2]) # wages[,2] >>>>>> names(out)[length(out)]<-"DV.lag" >>>>>> return(out) >>>>>> } >>>>>> A >>>>>> A.lagged <- do.call("rbind", by(A, A$group, lag.it)) >>>>>> A.lagged >>>>>> >>>>>> >>>>>> Now, I am trying to create the oppostive of lag for DV (should I call >>>>>> it "lead"?) >>>>>> I tried exactly the same as above, but with a different number under >>>>>> lag function (below), but it's not working. I am clearly doing >>>>>> something wrong. Any advice? >>>>>> Thanks a lot! >>>>>> >>>>>> >>>>>> lead.it <- function(x) { >>>>>> DV <- ts(x$DV, start = x$year[1]) >>>>>> idx <- seq(length = length(DV)) >>>>>> DVs <- cbind(DV, lag(DV, 2))[idx,] >>>>>> out<-cbind(x, DVs[,2]) >>>>>> names(out)[length(out)]<-"DV.lead" >>>>>> return(out) >>>>>> } >>>>>> A >>>>>> A.lead <- do.call("rbind", by(A, A$group, lead.it)) >>>>>> A.lead >>>>>> >>>>> >>>>> Try this: >>>>> >>>>> library(zoo) >>>>> z <- read.zoo(A, index = 1, split = "group", frequency = 1) >>>>> lag(z, c(-1, 0, 1)) >>>>> >>>> >>>> The ### line was missing: >>>> >>>> library(zoo) >>>> z <- read.zoo(A, index = 1, split = "group", frequency = 1) >>>> z <- as.zooreg(z) ### >>>> lag(z, c(-1, 0, 1)) >>>> >>> >>> >>> >>> -- >>> Dimitri Liakhovitski >>> Ninah Consulting >>> www.ninah.com >>> >> >> >> >> -- >> Dimitri Liakhovitski >> Ninah Consulting >> www.ninah.com >> > > > > -- > Dimitri Liakhovitski > Ninah Consulting > www.ninah.com > -- Dimitri Liakhovitski Ninah Consulting www.ninah.com ______________________________________________ R-help@r-project.org 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.