Skip to content
Prev 328979 / 398498 Next

lags of a variable, with a factor

On 08/24/2013 04:16 AM, Michael Friendly wrote:
Hi Michael,
Maybe this will do it.

lags <- function(x, k=1, prefix='lag', by) {
   if(missing(by)) {
   n <- length(x)
   res <- data.frame(lag0=x)
   for (i in 1:k) {
     res <- cbind(res, c(rep(NA, i), x[1:(n-i)]))
   }
   colnames(res) <- paste0(prefix, 0:k)
   return(res)
   }
   else {
    for(levl in levels(by)) {
     nextlags<-lags(x[by==levl,],prefix=prefix)
     rownames(nextlags)<-paste(levl,rownames(nextlags),sep=".")
     if(exist(res)) res<-rbind(res,nextlags)
     else res<-nextlags
    }
   }
}

Jim