I have a dataframe with column t. I want to create n lagging columns with names like t-1, t-2, etc.
year t t-1 t-2 19620101 1 NA NA 19630102 2 1 NA 19640103 3 2 1 19650104 4 3 2 19650104 5 4 3 19650104 6 5 4
My idea is that I will do this in four steps:
- Column name loop using paste
- Loop time frames for lagging columns using paste
- Loop to create lagging columns
- cbind them.
But I can not continue the code. Something rude:
df_final<-lagged(df="odd",n=3) lagged<-function(df,n){ df<-zoo(df) lags<-paste("A", 1:n, sep ="_") for (i in 1:5) { odd<-as.data.frame(lag(odd$OBS_Q,-1*i,na.pad = TRUE))
I am stuck in writing this feature. Could you show some way? Or another easier way to do this ....
Link: The basic lag in the vector / frame R
Application:
Real data:
x<-structure(list(DATE = 19630101:19630104, PRECIP = c(0, 0, 0,0), OBS_Q = c(1.61, 1.48, 1.4, 1.33), swb = c(1.75, 1.73, 1.7,1.67), gr4j = c(1.9, 1.77, 1.67, 1.58), isba = c(0.83, 0.83,0.83, 0.83), noah = c(1.31, 1.19, 1.24, 1.31), sac = c(1.99,1.8, 1.66, 1.57), swap = c(1.1, 1.05, 1.08, 0.99), vic.mm.day. = c(2.1,1.75, 1.55, 1.43)), .Names = c("DATE", "PRECIP", "OBS_Q", "swb","gr4j", "isba", "noah", "sac", "swap", "vic.mm.day."), class = c("data.table","data.frame"), row.names = c(NA, -4L))
The column that will lag is OBS_Q.