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.
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.
To install the stable version from CRAN:
install.packages("tsbox")
To install the development version:
remotes::install_github("christophsax/tsbox")
tsbox is built around a set of converters, which convert time series stored as ts, xts, data.frame, data.table, tibble, zoo, tsibble, tibbletime or timeSeries 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_df(x.df)x.tbl <- ts_tbl(x.dt)x.zoo <- ts_zoo(x.tbl)x.tsibble <- ts_tsibble(x.zoo)x.tibbletime <- ts_tibbletime(x.tsibble)x.timeSeries <- ts_timeSeries(x.tibbletime)all.equal(ts_ts(x.timeSeries), x.ts) # TRUE
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)
A set of helper functions makes it easy to combine or align multiple time series of all classes:
# collect time series as multiple time seriests_c(ts_dt(EuStockMarkets), AirPassengers)ts_c(EuStockMarkets, mdeaths) # combine time series to a new, single time seriests_bind(ts_dt(mdeaths), AirPassengers)ts_bind(ts_xts(AirPassengers), ts_tbl(mdeaths))
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'])))
data.frame
, tibble
, data.table
) keep explicit
NAs by default. Use ts_na_omit()
to make explicit NAs implicit. As
previously, ts_regular()
makes implicit NAs explicit.ts_default
, new function to change column names to defaults (time, value), so
that no auto detection is performed afterwards (#118)ts_summary
, returns a data frame with summary information of a ts-boxable
object. Also used to extract time series properties (ts_summary(x)$start
,
ts_summary(x)$freq
, etc.)ts_regular
gains fill
argument, to specify replacement value for NA
(#101)ts_pc
, ts_pcy
, ts_diff
, ts_diffy
have been rewritten and are much
faster. They now return a series of the same length as the input, with NA
s
at the beginning.ts_pca
, new function to calculate annualized percentage change ratets_span
gains extend
argument, to add explicit NA
sts_apply
pass on arguments. This allows functions generated by ts_ to pass
on additional arguments. E.g., ts_seas(AirPassengers, x11 = "")
(#115, #103)tslist
objects of length 1 don't get an id anymore (#116)ts_span
various fixes, boundary specification by shift string ("1 year"
)
or period now works as expected, also for non-heuristic series, such as
EuStockMarkets
(#106)ts_pick
, error if picked series is not in data (#100)ts_plot
, improved axis labels for high frequency series (#117)ts_start
, ts_end
, use ts_summary(x)$start
and ts_summary(x)$end
instead.tibbletime
time series (#90)POSIXct
columns for monthly data in different time
zones. Remove two way testing for daily series with POSIXct
columns. This
should fix mac binary build on CRAN (#97)