zoo (version 1.0-3)

zooreg: Regular zoo Series

Description

zooreg is the creator for the S3 class "zooreg" for regular "zoo" series. It inherits from "zoo" and is the analogue to ts.

Usage

zooreg(data, start = 1, end = numeric(), frequency = 1, 
  deltat = 1, ts.eps = getOption("ts.eps"), order.by = NULL)

Arguments

data
a numeric vector, matrix or a factor.
start
the time of the first observation. Either a single number or a vector of two integers, which specify a natural time unit and a (1-based) number of samples into the time unit.
end
the time of the last observation, specified in the same way as start.
frequency
the number of observations per unit of time.
deltat
the fraction of the sampling period between successive observations; e.g., 1/12 for monthly data. Only one of frequency or deltat should be provided.
ts.eps
time series comparison tolerance. Frequencies are considered equal if their absolute difference is less than ts.eps.
order.by
a vector by which the observations in x are ordered. If this is specified the arguments start and end are ignored and zoo(data, order.by, frequency) is called. See

Value

  • An object of class "zooreg" which inherits from "zoo". It is essentially a "zoo" series with a "frequency" attribute.

Details

Strictly regular series are those whose time points are equally spaced. Weakly regular series are strictly regular time series in which some of the points may have been removed but still have the original underlying frequency associated with them. "zooreg" is a subclass of "zoo" that is used to represent both weakly and strictly regular series. Internally, it is the same as "zoo" except it also has a "frequency" attribute. Its index class is more restricted than "zoo". The index: 1. must be numeric or a class which can be coerced via as.numeric (such as yearmon, yearqtr, Date, POSIXct etc.). 2. when converted to numeric must be expressable as multiples of 1/frequency. 3. group generic functions Ops should be defined, i.e., adding/substracting a numeric to/from the index class should produce the correct value of the index class again.

zooreg is the zoo analogue to ts. The arguments are almost identical, only in the case where order.by is specified, zoo is called with zoo(data, order.by, frequency). It creates a regular series of class "zooreg" which inherits from "zoo". It is essentially a "zoo" series with an additional "frequency" attribute. In the creation of "zooreg" objects (via zoo, zooreg, or coercion functions) it is always check whether the index specified complies with the frequency specified.

The class "zooreg" offers two advantages over code "ts": 1. The index does not have to be plain numeric (although that is the default), it just must be coercable to numeric, thus printing and plotting can be customized. 2. This class can not only represent strictly regular series, but also series with an underlying regularity, i.e., where some observations from a regular grid are omitted.

Hence, "zooreg" is a bridge between "ts" and "zoo" and can be employed to coerce back and forth between the two classes. The coercion function as.zoo.ts returns therefore an object of class "zooreg" inheriting from "zoo". Coercion between "zooreg" and "zoo" is also available and drops or tries to add a frequency respectively.

For checking whether a series is strictly regular or does have an underlying regularity the generic function is.regular can be used.

Methods to standard generics for regular series such as frequency, deltat and cycle are available for both "zooreg" and "zoo" objects. In the latter case, it is checked first (in a data-driven way) whether the series is in fact regular or not.

See Also

zoo, is.regular

Examples

Run this code
## equivalent specifications of a quarterly series
## starting in the second quarter of 1959.
zooreg(1:10, frequency = 4, start = c(1959, 2))
as.zoo(ts(1:10, frequency = 4, start = c(1959, 2)))
zoo(1:10, seq(1959.25, 1961.5, by = 0.25), frequency = 4)

## use yearqtr class for indexing the same series
z <- zoo(1:10, yearqtr(seq(1959.25, 1961.5, by = 0.25)), frequency = 4)
z
z[-(3:4)]

## create a regular series with a "Date" index
zooreg(1:5, start = Sys.Date())
## or with "yearmon" index
zooreg(1:5, end = yearmon(2000))

## standard methods available for regular series
frequency(z)
deltat(z)
cycle(z)
cycle(z[-(3:4)])

Run the code above in your browser using DataCamp Workspace