Hello. I am trying to work out some complicated if() logic.
I thought of using which() and if() but cannot get it.
I have a dataframe that looks like this:
head(deleteFridayTest)
Date nrec
1 2011-07-17 667
2 2011-07-18 266
3 2009-10-29 29
4 2009-10-30 211
5 2009-10-31 237
6 2009-11-01 898
I want to take the values in nrec for consecutive Friday, Saturday and
Sundays and average them and replace Sundays value with that average.
I came up with this:
deleteFridayTest[dayOfWeek(deleteFridayTest$Date)=="Sun",]$nrec <-
(deleteFridayTest[dayOfWeek(deleteFridayTest$Date)=="Sun",]$nrec +
deleteFridayTest[dayOfWeek(deleteFridayTest$Date)=="Sat",]$nrec +
deleteFridayTest[dayOfWeek(deleteFridayTest$Date)=="Fri",]$nrec)/3
but this won't work for my data because sometimes one or more of the days
of data may be missing. For example Friday's data could be missing, or
Friday and Saturday, or Sunday may be missing, or they all may be missing,
etc.
The rule I want to implement is that
if any of Friday, Saturday, or Sunday is available then I want to have an
entry for Sunday (call it 'X'). If all 3 days are missing then nothing
should be done and there will be no entry for X. If any of the days Fri,
Sat, Sun are available then X should be the "average" of those values (e.g.
if two days are available then sum and divide by 2, if just one day is
available then just use that value for X).
Can anyone suggest how to go about this?
Thank you.
[[alternative HTML version deleted]]