Learn R Programming

lubridate (version 1.8.0)

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)
)

Value

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

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.

Examples

Run this code

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))

Run the code above in your browser using DataLab