The opposite of "lag"
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
<ggrothendieck at gmail.com> wrote:
On Wed, Jul 21, 2010 at 10:50 AM, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
On Wed, Jul 21, 2010 at 10:14 AM, Dimitri Liakhovitski <dimitri.liakhovitski at 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