View source: R/monthlyfunction.R
monthlyfunction | R Documentation |
Generic function for obtaining 12 monthly values of a zoo object, by applying any R function to ALL the values in the object belonging to each one of the 12 calendar months (Jan...Dec).
monthlyfunction(x, ...)
## Default S3 method:
monthlyfunction(x, FUN, na.rm = TRUE, ...)
## S3 method for class 'zoo'
monthlyfunction(x, FUN, na.rm=TRUE,...)
## S3 method for class 'data.frame'
monthlyfunction(x, FUN, na.rm = TRUE, dates=1,
date.fmt = "%Y-%m-%d", out.type = "data.frame", verbose = TRUE, ...)
## S3 method for class 'matrix'
monthlyfunction(x, FUN, na.rm = TRUE, dates=1,
date.fmt = "%Y-%m-%d", out.type = "data.frame", verbose = TRUE, ...)
x |
zoo, xts, data.frame or matrix object, with daily or monthly time series. |
FUN |
Function that will be applied to ALL the values in |
na.rm |
Logical. Should missing values be removed? |
dates |
It is only used when |
date.fmt |
It is only used when |
out.type |
It is only used when |
verbose |
Logical; if TRUE, progress messages are printed |
... |
further arguments passed to or from other methods |
When x
is a zoo object, a numeric vector with 12 elements representing the computed monthly value for each month.
When x
is a data.frame which columns represent measurements at different gauging stations, the resulting object is a data.frame with 12 columns and as many rows as gauging stations are in x
, each row storing the computed 12 monthly value for each gauging station.
Due to the fact that FUN
is applied over all the elements in x
belonging to a given calendar month, its result will depend on the sampling frequency of x
and the type of function provided by FUN
(special attention have to be put when FUN=sum
)
Mauricio Zambrano-Bigiarini, mzb.devel@gmail
annualfunction
, seasonalfunction
, dm2seasonal
, daily2monthly
, daily2annual
## Loading daily streamflows (3 years) at the station
## Oca en Ona (Ebro River basin, Spain)
data(OcaEnOnaQts)
x <- OcaEnOnaQts
## Mean monthly streamflows at station 'x'
monthlyfunction(x, FUN=mean, na.rm=TRUE)
############################
## Boxplot of monthly values
## Daily to Monthly
m <- daily2monthly(x, FUN=mean, na.rm=TRUE)
## Median of the monthly values at the station
monthlyfunction(m, FUN=median, na.rm=TRUE)
## Vector with the three-letter abbreviations of the month names
cmonth <- format(time(m), "%b")
## Creating ordered monthly factors
months <- factor(cmonth, levels=unique(cmonth), ordered=TRUE)
## Boxplot of the monthly values
boxplot( coredata(m) ~ months, col="lightblue", main="Monthly streamflows, [m3/s]")
##############################
##############################
## Loading the monthly time series of precipitation within the Ebro River basin.
data(EbroPPtsMonthly)
x <- EbroPPtsMonthly
## Dates of 'x'
dates <- as.Date(x[,1])
## Monthly precipitation of all the stations in 'x'
## Not run:
## Sum of the monthly values in each station of 'x'
z <- zoo( x[, 2:ncol(x)], dates)
# Amount of years in 'x' (needed for computing the average)
nyears <- yip(from=start(z), to=end(z), out.type="nmbr" )
m <- monthlyfunction(z, FUN=sum)
## Another way of computing the sum of the monthly values in each station of 'x'
## This way is usefult for posteriori boxplots
m2 <- monthlyfunction(x, FUN=sum, dates=1, out.type="db")
## Average monthly precipitation in each station of 'x'
m2$Value <- m2$Value / nyears
## Creating monthly factors
m2$Month <- factor(m2$Month, levels=month.abb)
## boxplot of the monthly values in all stations
boxplot(Value ~ Month, m2, col="lightyellow", main="Monthly Precipitation, [mm/month]")
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.