This package provides rolling time series operators for unevenly spaced data, such as simple moving averages (SMAs), exponential moving averages (EMAs), and arbitrary rolling R functions. It is a wrapper around the highly-optimized C library utsAlgorithms. The time series class used by this package is the uts class.
The package rcpputs is a low-level wrapper around the same C library that does not rely on any time series class, but instead requires the user to pass in a vector of observation values and observation times to each function.
This package is not yet available on CRAN, but can be installled from GitHub:
devtools::install_github(c("andreas50/uts", "andreas50/utsOperators")) # using package 'devtools'
remotes::install_github(c("andreas50/uts", "andreas50/utsOperators")) # ... or using package 'remotes'
# Get sample unevenly-spaced time series with six observations
x <- ex_uts()
x
#> 2007-11-08 07:00:00 2007-11-08 08:01:00 2007-11-08 13:15:00 2007-11-09 07:30:00 2007-11-09 08:51:00
#> 48.375 48.500 48.375 47.000 47.500
#> 2007-11-09 15:15:00
#> 47.350
# SMA with last-point interpolation, 1-day wide rolling time window
sma(x, ddays(1))
# EMA with linear interpolation, 12-hour effective temporal length
ema(x, dhours(12), interpolation="linear")
# Rolling mean, sum, number of observation values in a 1-day wide rolling time window
rolling_apply(ex_uts(), width=ddays(1), FUN=mean)
rolling_apply(ex_uts(), width=ddays(1), FUN=sum)
rolling_apply(ex_uts(), width=ddays(1), FUN=length)