Class-Agnostic Time Series

Time series toolkit with identical behavior for all time series classes: 'ts','xts', 'data.frame', 'data.table', 'tibble', 'zoo', 'timeSeries', 'tsibble', 'tis' or 'irts'. Also converts reliably between these classes.


tsbox: Class-Agnostic Time Series in R

Project Status: Active – The project has reached a stable, usablestate and is being activelydeveloped. Codecov testcoverage Status at rOpenSci Software PeerReview R-CMD-check

The R ecosystem knows a vast number of time series standards. Instead of creating the ultimate 15th time series class, tsbox provides a set of tools that are agnostic towards the existing standards. The tools also allow you to handle time series as plain data frames, thus making it easy to deal with time series in a dplyr or data.table workflow.

See tsbox.help for the full documentation of the package.

To install the stable version from CRAN:

install.packages("tsbox")

To install the development version:

# install.packages("remotes")
remotes::install_github("ropensci/tsbox")
install.packages("ropensci/tsbox", repos = "https://ropensci.r-universe.dev")

Convert everything to everything

tsbox is built around a set of converters, which convert time series stored as ts, xts, data.frame, data.table, tibble, zoo, zooreg, tsibble, tibbletime, timeSeries, irts or tis to each other:

library(tsbox)
x.ts <- ts_c(fdeaths, mdeaths)
x.xts <- ts_xts(x.ts)
x.df <- ts_df(x.xts)
x.dt <- ts_dt(x.df)
x.tbl <- ts_tbl(x.dt)
x.zoo <- ts_zoo(x.tbl)
x.zooreg <- ts_zoo(x.zoo)
x.tsibble <- ts_tsibble(x.zooreg)
x.tibbletime <- ts_tibbletime(x.tsibble)
x.timeSeries <- ts_timeSeries(x.tibbletime)
x.irts <- ts_irts(x.tibbletime)
x.tis <- ts_tis(x.irts)
all.equal(ts_ts(x.tis), x.ts)
#> [1] TRUE

Use same functions for time series classes

Because this works reliably, it is easy to write functions that work for all classes. So whether we want to smooth, scale, differentiate, chain, forecast, regularize or seasonally adjust a time series, we can use the same commands to whatever time series class at hand:

ts_trend(x.ts)
ts_pc(x.xts)
ts_pcy(x.df)
ts_lag(x.dt)

Time series of the world, unite!

A set of helper functions makes it easy to combine or align multiple time series of all classes:

# collect time series as multiple time series
ts_c(ts_dt(EuStockMarkets), AirPassengers)
ts_c(EuStockMarkets, mdeaths)

# combine time series to a new, single time series
ts_bind(ts_dt(mdeaths), AirPassengers)
ts_bind(ts_xts(AirPassengers), ts_tbl(mdeaths))

And plot just about everything

Plotting all kinds of classes and frequencies is as simple as it should be. And we finally get a legend!

ts_plot(ts_scale(ts_c(mdeaths, austres, AirPassengers, DAX = EuStockMarkets[ ,'DAX'])))

Cheatsheet

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("tsbox")

0.4.2 by Christoph Sax, 2 years ago


https://docs.ropensci.org/tsbox/, https://github.com/ropensci/tsbox


Report a bug at https://github.com/ropensci/tsbox/issues


Browse source code at https://github.com/cran/tsbox


Authors: Christoph Sax [aut, cre] , Cathy Chamberlin [rev] , Nunes Matt [rev]


Documentation:   PDF Manual  


GPL-3 license


Imports data.table, anytime

Suggests testthat, dplyr, tibble, tidyr, forecast, seasonal, dygraphs, xts, ggplot2, scales, knitr, rmarkdown, tsibble, tsibbledata, tibbletime, tseries, units, zoo, tis, timeSeries, nycflights13, imputeTS, spelling, covr


Imported by bridgr, fable.ata, trendseries, tssim.

Depended on by disagmethod.

Suggested by RplotterPkg, mlr3forecast, reviser, tempdisagg, tsBSS.


See at CRAN