Це спосіб триматися в межах POSIXct
всесвіту , lubridate
а не дата зміни форматів на базову R - х POSIXt
. Я уникаю зміни формату дати у своїх сценаріях, оскільки вважаю, що це загальне місце, де вводяться помилки (наприклад, зміна часового поясу або втрата часових позначок). Відповідно до цієї поради слід користуватися %m+%
: R: додавання 1 місяця до дати
library("lubridate")
posixct.in <- parse_date_time(x = "2016-02-29", orders = "ymd")
posixct.seq <- posixct.in %m+% years(x = seq.int(from = 0, to = 3, by = 1))
posixct.seq <- posixct.in %m+% months(x = seq.int(from = 0, to = 3, by = 1))
posixct.seq <- posixct.in %m+% days(x = seq.int(from = 0, to = 3, by = 1))
posixct.seq <- posixct.in %m+% weeks(x = seq.int(from = 0, to = 3, by = 1))
Звичайний +
також іноді працює, але %m+%
запобігає таким помилкам:
posixct.seq <- posixct.in + years(x = seq.int(from = 0, to = 3, by = 1))
Спочатку я був розгублений, тому що думав, що %m+
це просто спосіб додати місяці, і подібних lubridate
команд, таких як %y+%
тощо, не існує. Але, виявляється, "m" не означає "додавання місяця". Моє найкраще здогадування - "магія" =)