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 ______________________________________________ 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.