Learn R Programming

pastecs (version 1.0-2)

daystoyears: Convert time units from "days" to "years" or back

Description

Convert time scales. The time scale "days" corresponds to 1 unit per day. The time scale "years" uses 1 unit for 1 year. It is used in any analysis that requires seasonal decomposition and/or elimination.

Usage

daystoyears(x, datemin=NULL, dateformat="m/d/Y")
yearstodays(x, xmin=NULL)

Arguments

x
A vector of time values
datemin
A character string representing the first date, using a format corresponding to dateformat. For instance, with datemin="04/23/1998" and dateformat="m/d/Y", the first observation is assumed to be made the 23th April 1
dateformat
The format used for the date in datemin. For instance, "d/m/Y" or "m/d/y". The distinction between "Y" and "y" is not important in Splus, but it is vital in Rto use "y" for two-digit years (ex: 89) and "Y" for four-d
xmin
The minimum value for the "days" time-scale

Value

  • A numerical vector of the same length as x with the converted time-scale

synopsis

daystoyears(x, datemin=NULL, dateformat="m/d/Y") yearstodays(x, xmin=NULL)

Details

The "years" time-scale uses one unit for each year. We deliberately "linearized" time in this time-scale and each year has 365.25 days. There is thus no adjustment for bissextile years. Similarly, one month is considered to be 1/12 year, no mather if it has 28, 29, 30 or 31 days. This representation simplifies further calculations, especially regarding seasonal effects (a quarter is exactly 0.25 units for instance), but introduces some shifts in time (of up to one day, which is not significant when working on long-term series with years as units). However, converting it back to "days", using yearstodays() restablishes correct initial days without errors.

See Also

buysbal

Examples

Run this code
# A vector with a "days" time-scale (25 values every 30 days)
A <- (1:25)*30
# Convert it to a "years" time-scale, using 23/05/2001 (d/m/Y) as first value
B <- daystoyears(A, datemin="23/05/2001", dateformat="d/m/Y")
B
# Convert it back to "days" time-scale
yearstodays(B, xmin=30)

Run the code above in your browser using DataLab