R/to_from_timeSeries.R

Defines functions ts_timeSeries ts_dts.timeSeries ts_timeSeries_dts

Documented in ts_timeSeries

register_class("timeSeries")

# to ---------------------------------------------------------------------------

#' Convert to Class
#' @noRd
ts_timeSeries_dts <- function(x) {
  stopifnot(requireNamespace("timeSeries"))
  stopifnot(requireNamespace("xts"))
  stopifnot(requireNamespace("zoo"))
  z <- ts_xts(x)
  dta <- zoo::coredata(z)
  timeSeries::timeSeries(dta, zoo::index(z), zone = dts_tattr(x)$tz)
}


# from -------------------------------------------------------------------------

#' @export
#' @method ts_dts timeSeries
ts_dts.timeSeries <- function(x) {
  stopifnot(requireNamespace("timeSeries"))
  stopifnot(requireNamespace("xts"))
  stopifnot(requireNamespace("zoo"))

  dta <- timeSeries::series(x)

  if (!grepl("%H", x@format)) {
    time <- as.Date(rownames(dta), format = x@format)
  } else {
    time <- as.POSIXct(rownames(dta), format = x@format, tz = x@FinCenter)
  }
  rownames(dta) <- NULL
  ts_dts(xts::xts(x = dta, order.by = time))
}


# main converter ---------------------------------------------------------------

#' @name ts_ts
#' @export
ts_timeSeries <- function(x) {
  check_ts_boxable(x)
  if (relevant_class(x) == "timeSeries") {
    return(x)
  }
  ts_timeSeries_dts(ts_dts(x))
}

Try the tsbox package in your browser

Any scripts or data that you put into this service are public.

tsbox documentation built on May 31, 2023, 6:41 p.m.