Skip to content

Sum of some months totals

3 messages · Frederic Ntirenganya, Adams, Jean

#
I want to compute monthly summaries from daily data. I want to choose which
month to start and how many months to total over.  Default could be to
start in January and total over 3 months.  For the number of rain days the
default threshold is 0.85mm.

I tried to make a function which sum all months not some of months. I will
appreciate any help from you guys. Thanks.
Here is the data and the code I used.
), Month = c(1L, 1L, 1L, 1L, 1L, 1L), Day = 1:6, Rain = c(0,
0, 0, 0, 0, 0)), .Names = c("Year", "Month", "Day", "Rain"), row.names = c(NA,
6L), class = "data.frame")

here is the function:

total = function(data, threshold = 0.85){
  month_tot=matrix(NA,31,12)
  rownames(month_tot)=as.character(1979:2009)
  colnames(month_tot)=c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
  raindays=month_tot
  # loop over months and years to get summary statistics
  for (mon in 1:12) {
    rain=data[data[2]==mon,c(1,4)]   # rain just for a specific month
    for (yr in 1979:2009) {
      month_tot[yr-1978,mon]=sum(rain[rain[,1]==yr,2])
      raindays[yr-1978,mon]=sum(rain[rain[,1]==yr,2]>threshold)
    }
  }
  month_tot
}

Regards,

Frederic.



Frederic Ntirenganya
Maseno University,
African Maths Initiative,
Kenya.
Mobile:(+254)718492836
Email: fredo at aims.ac.za
https://sites.google.com/a/aims.ac.za/fredo/
#
If you want to calculate the number of days having greater than a certain
threshold of rain within a range of months, a function like this might
serve your needs.

raindays <- function(data, monStart=1, monEnd=3, threshold=0.85) {
  with(data, {
    selRows <- Month >= monStart & Month <= monEnd & Rain > threshold
    days <- tapply(selRows, Year, sum)
    return(days)
  })
}

raindays(kitale)

Jean

On Tue, Apr 14, 2015 at 2:46 AM, Frederic Ntirenganya <ntfredo at gmail.com>
wrote:

  
  
#
Hi Jean,

Thanks for the help!
How can I compute monthly total of rainfall?

I want to compute both monthly total of rainfall and number of raindays. In
below function month_tot is a table and I want to some month. default is 3
months. The loop for quarter is not working and I am wondering why it is
not working.

total = function(data, threshold = 0.85){
  month_tot=matrix(NA,length(unique(data$Year)),12)
  rownames(month_tot)=as.character(unique(data$Year))

colnames(month_tot)=c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
  raindays=month_tot
  # loop over months and years to get summary statistics
  for (mon in 1:12) {
    rain=data[data[2]==mon,c(1,4)]   # rain just for a specific month
    for (yr in unique(data$Year)) {
      month_tot[yr-min(unique(data$Year)-1),mon]=sum(rain[rain[,1]==yr,2])
      #print(sum(rain[rain[,1]==yr,2]))

raindays[yr-min(unique(data$Year)-1),mon]=sum(rain[rain[,1]==yr,2]>threshold)
    }
  }
  month_tot
  1:ncol(month_tot)
  #month_tot[,1] + month_tot[,2] + month_tot[,3]
  quarter <-c()
  i = 3
  for (i in 1:ncol(month_tot)){

    quarter[i] = sum(month_tot[,i])
  }
  quarter
}

total(kitale)

Regards,
Frederic.

Frederic Ntirenganya
Maseno University,
African Maths Initiative,
Kenya.
Mobile:(+254)718492836
Email: fredo at aims.ac.za
https://sites.google.com/a/aims.ac.za/fredo/
On Tue, Apr 14, 2015 at 1:52 PM, Adams, Jean <jvadams at usgs.gov> wrote: