Learn R Programming

hydroTSM (version 0.3-4)

monthlyfunction: Monthly Function

Description

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).

Usage

monthlyfunction(x, ...)

## S3 method for class 'default': 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, date.fmt = "\%Y-\%m-\%d", out.type = "data.frame", verbose = TRUE, ...) ## S3 method for class 'matrix': monthlyfunction(x, FUN, na.rm = TRUE, dates, date.fmt = "\%Y-\%m-\%d", out.type = "data.frame", verbose = TRUE, ...)

Arguments

x
zoo, xts, data.frame or matrix object, with daily or monthly time series. Measurements at several gauging stations can be stored in a data.frame of matrix object, and in that case, each column of x represent the time series measured in each
FUN
Function that will be applied to ALL the values in x belonging to each one of the 12 months of the year (e.g., FUN can be some of mean, sum, max, min, sd).
na.rm
Logical. Should missing values be removed? -) TRUE : the monthly values and FUN are computed considering only those values in x different from NA -) FALSE: if there is AT LEAST one NA within a month, the corresponding
dates
It is only used when x is not a zoo object. numeric, factor, Date indicating how to obtain the dates. If dates is a number, it indicates the index of the column in x that stores the dates If dates is
date.fmt
It is only used when x is not a zoo object. character indicating the format in which the dates are stored in dates, e.g. %Y-%m-%d. See format in as.Date.
out.type
It is only used when x is a matrix or data.frame. Character defining the desired type of output. Valid values are: -) data.frame: a data.frame, with 12 columns representing the months, and as many rows as gauging stations are inc
verbose
Logical; if TRUE, progress messages are printed
...
further arguments passed to or from other methods

Value

  • 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.

See Also

annualfunction, seasonalfunction, dm2seasonal, daily2monthly, daily2annual

Examples

Run this code
## 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'
## 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]")

Run the code above in your browser using DataLab