(sub)Daily -> Monthly
daily2monthly.Rd
Generic function for transforming a DAILY (sub-daily or weekly) regular time series into a MONTHLY one
Usage
daily2monthly(x, ...)
subdaily2monthly(x, ...)
# S3 method for default
daily2monthly(x, FUN, na.rm=TRUE, na.rm.max=0, ...)
# S3 method for zoo
daily2monthly(x, FUN, na.rm=TRUE, na.rm.max=0, ...)
# S3 method for data.frame
daily2monthly(x, FUN, na.rm=TRUE, na.rm.max=0, dates=1,
date.fmt = "%Y-%m-%d", out.type = "data.frame", out.fmt="numeric",
verbose=TRUE, ...)
# S3 method for matrix
daily2monthly(x, FUN, na.rm=TRUE, na.rm.max=0, dates=1,
date.fmt = "%Y-%m-%d", out.type = "data.frame", out.fmt="numeric",
verbose=TRUE, ...)
Arguments
- x
zoo, data.frame or matrix object, with (sub)daily time series.
Measurements at several gauging stations can be stored in a data.frame or matrix object, and in that case, each column ofx
represents the time series measured in each gauging station, and the column names ofx
have to correspond to the ID of each station (starting by a letter).- FUN
Function that have to be applied for transforming from daily to monthly time step (e.g., for precipitation
FUN=sum
and for temperature and streamflow tsFUN=mean
).FUN
MUST accept thena.rm
argument, becausena.rm
is passed toFUN
.- na.rm
Logical. Should missing values be removed?
-) TRUE : the monthly values are computed only for months with a percentage of missing values less thanna.rm.max
-) FALSE: if there is AT LEAST one NA within a month, the corresponing monthly values in the output object will beNA
.- na.rm.max
Numeric in [0, 1]. It is used to define the maximum percentage of missing values allowed in each month to keep the monthly aggregated value in the output object of this function. In other words, if the percentage of missing values in a given month is larger or equal than
na.rm.max
the corresponding monthly value will beNA
.- dates
numeric, factor or Date object indicating how to obtain the dates for each gauging station
Ifdates
is a number (default), it indicates the index of the column in x that stores the dates
Ifdates
is a factor, it is converted into Date class, using the date format specified bydate.fmt
Ifdates
is already of Date class, the code verifies that the number of days on it be equal to the number of elements inx
- date.fmt
character indicating the format in which the dates are stored in dates, e.g. %Y-%m-%d. See
format
inas.Date
.
ONLY required whenclass(dates)=="factor"
orclass(dates)=="numeric"
.- out.type
Character that defines the desired type of output. Valid values are:
-) data.frame: a data.frame, with as many columns as stations are included inx
, and row names indicating the month and year for each value.
-) db : a data.frame, with 4 columns will be produced.
The first column (StationID) stores the ID of the station,
The second column (Year) stores the year
The third column (Month) stores the Month
The fourth column (Value) stores the numerical values corresponding to the values specified in the three previous columns.- out.fmt
OPTIONAL. Only used when
x
is a matrix or data.frame object /cr character, for selecting if the result will be a matrix/data.frame or a zoo object. Valid values are: numeric, zoo.- verbose
logical; if TRUE, progress messages are printed
- ...
arguments additional to
na.rm
passed toFUN
.
Author
Mauricio Zambrano-Bigiarini, mzb.devel@gmail
Examples
######################
## Ex1: Computation of monthly values, removing any missing value in 'x'
# Loading the DAILY precipitation data at SanMartino
data(SanMartinoPPts)
x <- SanMartinoPPts
# Subsetting 'x' to its first three months (Jan/1921 - Mar/1921)
x <- window(x, end="1921-03-31")
## Transforming into NA the 10% of values in 'x'
set.seed(10) # for reproducible results
n <- length(x)
n.nas <- round(0.1*n, 0)
na.index <- sample(1:n, n.nas)
x[na.index] <- NA
## Agreggating from Daily to Monthly, removing any missing value in 'x'
m <- daily2monthly(x, FUN=sum, na.rm=TRUE)
######################
## Ex2: Computation of monthly values only when the percentage of NAs in each
# month is lower than a user-defined percentage (10% in this example).
# Loading the DAILY precipitation data at SanMartino
data(SanMartinoPPts)
x <- SanMartinoPPts
# Subsetting 'x' to its first three months (Jan/1921 - Mar/1921)
x <- window(x, end="1921-03-31")
## Transforming into NA the 10% of values in 'x'
set.seed(10) # for reproducible results
n <- length(x)
n.nas <- round(0.1*n, 0)
na.index <- sample(1:n, n.nas)
x[na.index] <- NA
## Daily to monthly, only for months with less than 10% of missing values
m2 <- daily2monthly(x, FUN=sum, na.rm=TRUE, na.rm.max=0.1)
# Verifying that the second and third month of 'x' had 10% or more of missing values
cmv(x, tscale="month")
######################
## Ex3: Loading the HOURLY streamflows for the station Karamea at Gorge
data(KarameaAtGorgeQts)
x <- KarameaAtGorgeQts
# Sub-daily to monthly ts
subdaily2monthly(x, FUN=mean, na.rm=TRUE)