Learn R Programming

seas (version 0.3-3)

seas.sum: Seasonal sum data object

Description

Create a seasonal sum object used for analysis of precipitation data (among other things, such as recharge rates); this object has sums in each bin of a season, as well as for each annum (or year).

Usage

# minimum usage
seas.sum(x)

# all options seas.sum(x, var, width = 11, start.day=1, prime, a.cut = 0.3, na.cut = 0.2)

Arguments

x
a data.frame with daily variables to be summed, such as precipitation
var
the names of one or more variables in x, such as c("rain","snow","precip")
width
a number specifying the width of the bin (factor) in days, or "mon" for Months (see mkseas for others)
start.day
the first day of the season, specified as either a Date or as an integer day of the year; annual sums start on this day, and end a day before start.day in the following year
prime
a single variable from var which is the prime variable of interest, such as "precip"; this is the variable used for comparison with a.cut and na.cut in the resulting active and <
a.cut
cut-off value for the day to be considered an active or wet day (based on the prime variable); a trace amount of 0.3 mm is suggested; if a.cut is NA or zero, the active variable
na.cut
cut-off fraction of missing values; can be single value or a vector for c(annual,seasonal); details given below

synopsis

seas.sum(x, var, width = 11, start.day=1, prime, a.cut = 0.3, na.cut = 0.2)

Details

This function is used to discretize and sum time-varying data in a data.frame for analysis in seasonal and annual parts. This is particularly useful for calculating normals of rates, such as precipitation and recharge. This function simply sums up each variable in each bin for each annum (or year), and provides the results in several arrays. Sums are not normalized, and represent a sum for the number of days in the bin (seasonal data) or annum (for annual data). Seasonal data can be normalized by the number of days (for a rate per day) or by the number of active days where prime > a.cut. For annual sums, annums with many missing values are ignored (receiving a value of NA) since it has insufficient data for a complete sum. The amount of allowable NA values per annum is controlled by na.cut[1], which is a fraction of NA values for the whole annum (default is 0.2). The seasonal sums are calculated independently from the annual sums. Individual bins from each year with many missing values are ignored, where the amount of allowable NA values is controlled by na.cut[2] (or na.cut[1], if the length of na.cut is 1). The default fraction of NAs in each bin of each annum is 0.2.

See Also

To view the result try image.seas.sum, or alternatively, plot.seas.sum

To calculate and view a normal, use seas.norm and plot.seas.norm, or for precipitation use precip.norm and plot.precip.norm

Examples

Run this code
data(mscdata)
dat <- mksub(mscdata,id=1108447)
dat.ss <- seas.sum(dat,width="mon")

# Structure in R
str(dat.ss)

# Annual data
dat.ss$ann

# Demonstrate how to slice through a cubic array
dat.ss$seas["1990",,]
dat.ss$seas[,2,] # or "Feb", if using English locale
dat.ss$seas[,,"precip"]

# Simple calculation on an array
(monthly.mean <- apply(dat.ss$seas[,,"precip"],2,mean,na.rm=TRUE))
barplot(monthly.mean,ylab="Mean monthly total (mm/month)",
	main="Un-normalized mean precipitation in Vancouver, BC")
text(6.5,150,paste("Un-normalized rates given 'per month' should be",
	"avoided since ~3-9% error is introduced",
	"to the analysis between months",sep=""))

# Normalized precip
norm.monthly <- dat.ss$seas[,,"precip"]/dat.ss$days
norm.monthly.mean <- apply(norm.monthly,2,mean,na.rm=TRUE)
print(round(norm.monthly,2))
print(round(norm.monthly.mean,2))
barplot(norm.monthly.mean,ylab="Normalized mean monthly total (mm/day)",
	main="Normalized mean precipitation in Vancouver, BC")

# Better graphics of data
dat.ss <- seas.sum(dat,width=11)
image(dat.ss)

Run the code above in your browser using DataLab