The tsibble package provides a data class of tbl_ts to represent tidy time series data. A tsibble consists of a time index, key, and other measured variables in a data-centric format, which is built on top of the tibble.

Index

An extensive range of indices are supported by tsibble: native time classes in R (such as Date, POSIXct, and difftime) and tsibble's new additions (such as yearweek, yearmonth, and yearquarter). Some commonly-used classes have built-in support too, including ordered, hms::hms, zoo::yearmon, zoo::yearqtr, and nanotime.

For a tbl_ts of regular interval, a choice of index representation has to be made. For example, a monthly data should correspond to time index created by yearmonth or zoo::yearmon, instead of Date or POSIXct. Because months in a year ensures the regularity, 12 months every year. However, if using Date, a month containing days ranges from 28 to 31 days, which results in irregular time space. This is also applicable to year-week and year-quarter.

Since the tibble that underlies the tsibble only accepts a 1d atomic vector or a list, the tsibble doesn't accept types of POSIXlt and timeDate.

Tsibble supports arbitrary index classes, as long as they can be ordered from past to future. To support a custom class, one needs to define index_valid() for the class and calculate the interval through interval_pull().

Key

Key variable(s) together with the index uniquely identifies each record:

  • Empty: an implicit variable. NULL resulting in a univariate time series.

  • A single variable: For example, data(pedestrian) use the bare Sensor as the key.

  • Multiple variables: For example, Declare key = c(Region, State, Purpose) for data(tourism). Key can be created in conjunction with tidy selectors like starts_with().

Interval

The interval function returns the interval associated with the tsibble.

  • Regular: the value and its time unit including "nanosecond", "microsecond", "millisecond", "second", "minute", "hour", "day", "week", "month", "quarter", "year". An unrecognisable time interval is labelled as "unit".

  • Irregular: as_tsibble(regular = FALSE) gives the irregular tsibble. It is marked with !.

  • Unknown: if there is only one entry for each key variable, the interval cannot be determined (?).

An interval is obtained based on the corresponding index representation:

  • integer/numeric/ordered (ordered factor): either "unit" or "year" (Y)

  • yearquarter/yearqtr: "quarter" (Q)

  • yearmonth/yearmon: "month" (M)

  • yearweek: "week" (W)

  • Date: "day" (D)

  • difftime: "quarter" (Q), "month" (M), "week" (W), "day" (D), "hour" (h), "minute" (m), "second" (s)

  • POSIXct/hms: "hour" (h), "minute" (m), "second" (s), "millisecond" (us), "microsecond" (ms)

  • nanotime: "nanosecond" (ns)

Time zone

Time zone corresponding to index will be displayed if index is POSIXct. ? means that the obtained time zone is a zero-length character "".

The tsibble package fully utilises the print method from the tibble. Please refer to tibble::tibble-package to change display options.

See also

Examples

# create a tsibble w/o a key ---- tsibble( date = as.Date("2017-01-01") + 0:9, value = rnorm(10) )
#> Using `date` as index variable.
#> # A tsibble: 10 x 2 [1D] #> date value #> <date> <dbl> #> 1 2017-01-01 -0.158 #> 2 2017-01-02 -0.177 #> 3 2017-01-03 1.42 #> 4 2017-01-04 -1.32 #> 5 2017-01-05 -0.0613 #> 6 2017-01-06 0.0956 #> 7 2017-01-07 -0.543 #> 8 2017-01-08 0.498 #> 9 2017-01-09 -0.0419 #> 10 2017-01-10 0.496
# create a tsibble with one key ---- tsibble( qtr = rep(yearquarter("2010-01") + 0:9, 3), group = rep(c("x", "y", "z"), each = 10), value = rnorm(30), key = group )
#> Using `qtr` as index variable.
#> # A tsibble: 30 x 3 [1Q] #> # Key: group [3] #> qtr group value #> <qtr> <chr> <dbl> #> 1 2010 Q1 x 0.901 #> 2 2010 Q2 x 1.62 #> 3 2010 Q3 x 0.379 #> 4 2010 Q4 x -0.169 #> 5 2011 Q1 x -0.542 #> 6 2011 Q2 x -1.45 #> 7 2011 Q3 x 0.180 #> 8 2011 Q4 x 0.498 #> 9 2012 Q1 x -1.29 #> 10 2012 Q2 x 0.755 #> # … with 20 more rows