Thanks All, This is how I solved the problem and working correctly.
ndays <- nrow(Wb30) for (iday in 2:ndays) { #Wb30$Water_Balance <- with( Wb30, cumsum(Water_Balance + Rainfall - Evaporation ) ) # Wb30$Water_Balance <- with( Wb30, cumsum(Wb30$Water_Balance[iday-1] + Wb30$Rainfall[iday] - Wb30$Evaporation[iday] ) ) #Wb30$Water_Balance[iday] <- min(Wb30$Water_Balance[iday], 0) #Wb30$Water_Balance[iday] <- max(Wb30$Water_Balance[iday], 100) #Wb30$ValidWB <- with( Wb30, 0 == cumsum( Water_Balance < 0 | 100 < Water_Balance ) ) Wb30$Water_Balance[iday] <- Wb30$Water_Balance[iday-1] + Wb30$Rainfall[iday] - Wb30$Evaporation[iday] if (Wb30$Water_Balance[iday]<0){ Wb30$Water_Balance[iday]=0 }else if(Wb30$Water_Balance[iday]>100){ Wb30$Water_Balance[iday]=100 } } Regards, Frederic. Frederic Ntirenganya Maseno University, African Maths Initiative, Kenya. Mobile:(+254)718492836 Email: fr...@aims.ac.za https://sites.google.com/a/aims.ac.za/fredo/ On Fri, Oct 24, 2014 at 10:49 AM, Frederic Ntirenganya <ntfr...@gmail.com> wrote: > Hi Mac, > > The first entry is 0 for water balance. That means the 3rd should be zero > according to the formula. > > Water balance today = Water balance yesterday + Rainfall − Evaporation > > This loop gives 5 for each date. I don't see why ? > > May Rainfall Evaporation Water_Balance > 1 7 0 5 0 > 2 8 10 5 NA > 3 9 0 5 NA > 4 10 0 5 NA > 5 11 2 5 NA > 6 12 23 5 NA > > Regards, > Frederic. > > Frederic Ntirenganya > Maseno University, > African Maths Initiative, > Kenya. > Mobile:(+254)718492836 > Email: fr...@aims.ac.za > https://sites.google.com/a/aims.ac.za/fredo/ > > On Thu, Oct 23, 2014 at 7:17 PM, MacQueen, Don <macque...@llnl.gov> wrote: > >> If I understand the problem correctly, then I’d suggest this: >> >> ndays <- nrow(Wb30) >> >> for (iday in 2:ndays) { >> >> Wb30$Water_Balance[iday] <- Wb30$Water_Balance[iday-1] + >> Wb30$Rainfall[iday] - Wb30$Evaporation[iday] >> >> Wb30$Water_Balance[iday] <- min(Wb30$Water_Balance[iday], 100) >> Wb30$Water_Balance[iday] <- max(Wb30$Water_Balance[iday], 0) >> >> } >> >> It may be possible without a loop, but I think a loop is easier to >> understand in the current circumstances. And is likely to be fast enough >> that it does not matter. >> >> - >> Don MacQueen >> >> Lawrence Livermore National Laboratory >> 7000 East Ave., L-627 >> Livermore, CA 94550 >> 925-423-1062 >> >> >> >> >> >> On 10/23/14, 5:33 AM, "Frederic Ntirenganya" <ntfr...@gmail.com> wrote: >> >> >Dear All, >> > >> >I want to calculate water balance using the following formula: >> >Water balance today = Water balance yesterday + Rainfall - Evaporation >> > >> >This is a sample of data I am using: >> > >> >head(Wb30) >> > May Rainfall Evaporation Water_Balance >> >1 7 0 5 0 >> >2 8 10 5 NA >> >3 9 0 5 NA >> >4 10 0 5 NA >> >5 11 2 5 NA >> >6 12 23 5 NA >> > >> >The following is the loop am trying to use but it is not working well. >> > >> >#Water balance today = Water balance yesterday + Rainfall - Evaporation >> >#If Water balance today < 0 then Water balance today = 0 >> >#If Water balance today > 100 then Water balance today = 100 >> >wb=c() >> >for (w in 1:length(Wb30$Water_Balance)){ >> > if(w<0 & w>100){w<-0 & w<-100} >> > #print (w); >> > for (i in 1:length(Wb30$Rainfall)){ >> > for (j in 1:length(Wb30$Evaporation)){ >> > } >> > } >> > wb<-Wb30$Water_Balance[w] + Wb30$Rainfall[i+1]-Wb30$Evaporation[j+1] >> >} >> >wb >> > >> >Any suggest of what I am missing for it to work correctly is welcome. >> > >> > >> >Regards, >> > >> >Frederic Ntirenganya >> >Maseno University, >> >African Maths Initiative, >> >Kenya. >> >Mobile:(+254)718492836 >> >Email: fr...@aims.ac.za >> >https://sites.google.com/a/aims.ac.za/fredo/ >> > >> > [[alternative HTML version deleted]] >> > >> >______________________________________________ >> >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. >> >> > [[alternative HTML version deleted]] ______________________________________________ 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.