ti
is used to create time index objects, which are
useful for date calculations and as indexes for tis
(time
indexed series). as.ti
and is.ti
coerce an object to a time index and
test whether an object is a time index.
couldBeTi
tests whether or not x
is numeric and has all
elements within the range expected for a ti
time index with the
given tif
. If tif
is NULL
(the default), the test
is whether or not x
could be a ti
of any
frequency. If so, it can be safely coerced to class ti
by
as.ti
.
ti(x, ...)
## S3 method for class 'Date':
ti(x, \dots)
## S3 method for class 'default':
ti(x, tif = NULL, freq = NULL, \dots)
## S3 method for class 'jul':
ti(x, tif = NULL, freq = NULL, hour = 0, minute = 0, second = 0, \dots)
## S3 method for class 'ssDate':
ti(x, \dots)
## S3 method for class 'ti':
ti(x, tif = NULL, freq = NULL, \dots)
## S3 method for class 'tis':
ti(x, \dots)
as.ti(x)
is.ti(x)
couldBeTi(x, tif = NULL)
is.ti
) or converted into a ti
object. As described in the details below, the constructor function
ti
can deal with several different kinds of x
.tif()
with no arguments returns a list of the allowable
numerical codes and names. Either tif
or
freq
must be supplied for the variants of ti()<
tif
's can alternatively be specified by their frequency,
such as 1 (annual), 2 (semiannual), 4 (quarterly), 6 (bimonthly),
12 (monthly), 24 (semimonthly), 26 (biweekly), 36 (tenday), 52
(weekly), 262 (business) and 365 (daily). Eitheis.ti
and couldBeTi
return TRUE
or FALSE
.
as.ti
coerces its argument to have class ti
, without
making any attempt to discern whether or not this is a sensible thing
to do. as.ti
should only be called on an object if
couldBeTi
on that object answers TRUE
.
ti
constructs a ti
object like x
, except for two
special cases: 1. If x
is a tis
series, the return value is a vector
time index with elements corresponding to the observation periods of
x
.
2. If x
is a numeric object of length 2 interpretable as
c(year, period)
, the return value is a single ti
.
ti
has a tif
(ti Frequency) and a period. The period
represents the number of periods elapsed since the base period for that
frequency. Adding or subtracting an integer to a ti
gives
another ti
. Provided their corresponding element have matching
tif
s, the comparison operators <,>, <=,>=, ===,>,>
all
work, and subtracting one ti
from another gives the number of
periods between them. See the examples section below. The ti
class implements methods for a number of generic
functions, including "["
, as.Date
, as.POSIXct
,
as.POSIXlt
, c
, cycle
, edit
, format
,
frequency
, jul
, max
, min
, print
,
rep
, seq
, tif
, tifName
, time
,
ymd
.
ti
is a generic function with specialized methods to handle
jul
, Date
, ti
and tis
objects.
The default method (ti.default
) deals with character x
by
calling as.Date
on it. Otherwise, it proceeds as follows:
If x
is numeric, a check is made to see if x
could be
a ti
object that has somehow lost it's class attribute. Failing that,
isYmd
is used to see if it could be yyyymmdd date, then
isTime
is called to see if x
could be a decimal time (a
number between 1799 and 2200). If x
is of length 2, an attempt
to interpret it as a c(year, period)
pair is made. Finally,
if all else fails, as.Date(x)
is called to attempt to create a
Date
object that can then be used to construct a ti
.
jul
, ymd
, tif
,
tifName
, as.Date
z <- ti(19971231, "monthly") ## monthly ti for Dec 97
is.ti(z) ## TRUE
is.ti(unclass(z)) ## FALSE
couldBeTi(unclass(z)) ## TRUE
ymd(z + 4) ## 19980430
z - ti(c(1997,6), freq = 12) ## monthly ti for June 1997
ti(z, tif = "wmonday") ## week ending Monday June 30, 1997
Run the code above in your browser using DataLab