Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

cyclic_encoding

Cyclic encoding of date-times


Description

Encode a date-time object into a cyclic coordinate system in which the distances between two pairs of dates separated by the same time duration are the same.

Usage

cyclic_encoding(
  x,
  periods,
  encoders = c("sin", "cos"),
  week_start = getOption("lubridate.week.start", 7)
)

Arguments

x

a date-time object

periods

a character vector of periods. Follows same specification as period and floor_date functions.

encoders

names of functions to produce the encoding. Defaults to "sin" and "cos". Names of any predefined functions accepting a numeric input are allowed.

week_start

day starting a week (used for weekly periods).

Details

Machine learning models don't know that December 31st and January 1st are close in our human calendar sense. cyclic_encoding makes it obvious to the machine learner that two calendar dates are close by mapping the dates onto the circle.

Value

a numeric matrix with number of columns equal length(periods) * length(types).

Examples

times <- ymd_hms("2019-01-01 00:00:00") + hours(0:23)
cyclic_encoding(times, c("day", "week", "month"))
plot(cyclic_encoding(times, "1d"))
plot(cyclic_encoding(times, "2d"), xlim = c(-1, 1))
plot(cyclic_encoding(times, "4d"), xlim = c(-1, 1))

lubridate

Make Dealing with Dates a Little Easier

v1.7.10
GPL (>= 2)
Authors
Vitalie Spinu [aut, cre], Garrett Grolemund [aut], Hadley Wickham [aut], Ian Lyttle [ctb], Imanuel Costigan [ctb], Jason Law [ctb], Doug Mitarotonda [ctb], Joseph Larmarange [ctb], Jonathan Boiser [ctb], Chel Hee Lee [ctb], Google Inc. [ctb, cph]
Initial release

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.