R/to_from_data.frame.R
, R/to_from_data.table.R
, R/to_from_tibble.R
, and 9 more
ts_ts.Rd
tsbox is built around a set of converters, which convert time series
stored as ts
, xts
, zoo
, data.frame
, data.table
, tbl
, tbl_ts
,
tbl_time
, tis
, irts
or timeSeries
to each other.
ts_data.frame(x) ts_df(x) ts_data.table(x) ts_dt(x) ts_tbl(x) ts_tibbletime(x) ts_timeSeries(x) ts_tis(x) ts_ts(x) ts_irts(x) ts_tsibble(x) ts_tslist(x) ts_xts(x) ts_zoo(x)
x | ts-boxable time series, an object of class |
---|
ts-boxable time series of the desired class, an object of class ts
,
xts
, zoo
, data.frame
, data.table
, tbl
, tbl_ts
, tbl_time
, tis
,
irts
or timeSeries
.
In data frames, multiple time series will be stored in a 'long' format. tsbox detects a value, a time and zero to several id columns. Column detection is done in the following order:
Starting on the right, the first first numeric
or integer
column
is used as value column.
Using the remaining columns, and starting on the right again, the first
Date
, POSIXct
, numeric
or character
column is used as
time column. character
strings are parsed by anytime::anytime()
.
The time stamp, time
, indicates the beginning of a period.
All remaining columns are id columns. Each unique combination of id columns points to a time series.
Alternatively, the time column and the value column to be
explicitly named as time
and value
. If explicit names are used, the
column order will be ignored.
Whenever possible, tsbox relies on heuristic time conversion. When a
monthly "ts"
time series, e.g., AirPassengers
, is converted to a data
frame, each time stamp (of class "Date"
) is the first day of the month. In
most circumstances, this reflects the actual meaning of the data stored in a
"ts"
object. Technically, of course, this is not correct: "ts"
objects
divide time in period of equal length, while in reality, February is shorter
than January. Heuristic conversion is done for frequencies of 0.1 (decades),
1 (years), 4 (quarters) and 12 (month).
For other frequencies, e.g. 260, of EuStockMarkets
, tsbox uses exact
time conversion. The year is divided into 260 equally long units, and time
stamp of a period will be a point in time (of class "POSIXct"
).
#> mdeaths fdeaths #> Jan 1974 2134 901 #> Feb 1974 1863 689 #> Mar 1974 1877 827 #> Apr 1974 1877 677 #> May 1974 1492 522 #> Jun 1974 1249 406#> id time value #> 1 mdeaths 1974-01-01 2134 #> 2 mdeaths 1974-02-01 1863 #> 3 mdeaths 1974-03-01 1877 #> 4 mdeaths 1974-04-01 1877 #> 5 mdeaths 1974-05-01 1492 #> 6 mdeaths 1974-06-01 1249#> # A tibble: 6 × 3 #> id time value #> <chr> <date> <dbl> #> 1 mdeaths 1974-01-01 2134 #> 2 mdeaths 1974-02-01 1863 #> 3 mdeaths 1974-03-01 1877 #> 4 mdeaths 1974-04-01 1877 #> 5 mdeaths 1974-05-01 1492 #> 6 mdeaths 1974-06-01 1249#> id time value #> 1: mdeaths 1974-01-01 2134 #> 2: mdeaths 1974-02-01 1863 #> 3: mdeaths 1974-03-01 1877 #> 4: mdeaths 1974-04-01 1877 #> 5: mdeaths 1974-05-01 1492 #> 6: mdeaths 1974-06-01 1249#> mdeaths fdeaths #> 1974-01-01 2134 901 #> 1974-02-01 1863 689 #> 1974-03-01 1877 827 #> 1974-04-01 1877 677 #> 1974-05-01 1492 522 #> 1974-06-01 1249 406#> time value #> 1 1949-01-01 112 #> 2 1949-02-01 118 #> 3 1949-03-01 132 #> 4 1949-04-01 129 #> 5 1949-05-01 121 #> 6 1949-06-01 135#> id time value #> 1 DAX 1991-07-01 03:18:27 1628.75 #> 2 DAX 1991-07-02 13:01:32 1613.63 #> 3 DAX 1991-07-03 22:44:38 1606.51 #> 4 DAX 1991-07-05 08:27:43 1621.04 #> 5 DAX 1991-07-06 18:10:48 1618.16 #> 6 DAX 1991-07-08 03:53:53 1610.61# multiple id multi.id.df <- rbind( within(ts_df(ts_c(fdeaths, mdeaths)), type <- "level"), within(ts_pc(ts_df(ts_c(fdeaths, mdeaths))), type <- "pc") ) head(ts_ts(multi.id.df))#> fdeaths_level mdeaths_level fdeaths_pc mdeaths_pc #> Jan 1974 901 2134 NA NA #> Feb 1974 689 1863 -23.52941 -12.6991565 #> Mar 1974 827 1877 20.02903 0.7514761 #> Apr 1974 677 1877 -18.13785 0.0000000 #> May 1974 522 1492 -22.89513 -20.5114544 #> Jun 1974 406 1249 -22.22222 -16.2868633