I am trying to populate a column as follows:
At t-1: if NAV(t-1) - HWM(t-1) >0
then at t: HWM(t) = NAV(t) otherwise: HWM(t) = HWM(t-1)
My R skills are quite elementary and the following loop, though it works, is excruciatingly slow (150,000 observations)
for (i in 1:length(E$HWM)) {
print(i)
HWM[E$t>2][i]<-ifelse(NAV_lag1[E$t>2][i]-HWM_lag1[E$t>2][i]>0,
NAV_lag1[E$t>2][i],HWM_lag1[t>2[i])
HWM_lag1[i] <-lag(HWM,1)[i]
}
Any suggestions to make my process more efficient?
Thank you very much.
Here is what I have:
zz <- "t NAV HWM NAV_lag1 HWM_lag1
1 1000 NA NA NA
2 1200 1000 1000
3 1400 1200
4 1200 1400
5 1100 1200
5 1000 1100 "
Here is what I would like to get:
zz <- "t NAV HWM NAV_lag1 HWM_lag1
1 1000 NA NA NA
2 1200 1000 1000 1000
3 1400 1200 1200 1000
4 1200 1400 1400 1200
5 1100 1400 1200 1400
5 1000 1400 1100 1400"
Data <- read.table(text=zz, header = TRUE)
Aucun commentaire:
Enregistrer un commentaire