Сложности с месяцами
Что должна вернуть операция ymd("2018-01-31") + months(1)? Это будет 30, 31 или 28 дней спустя? Попробуйте выполнить её. В общем случае lubridate возвращает тот же день месяца в следующем месяце, но поскольку 31 февраля не существует, lubridate вернёт пропущенное значение — NA.
Существуют альтернативные операторы сложения и вычитания: %m+% и %m-%, которые работают иначе. Вместо того чтобы возвращать NA для несуществующей даты, они откатываются к последнему существующему дню месяца.
Изучите их поведение, попытавшись сгенерировать последовательность последних дней каждого месяца текущего года.
Это упражнение является частью курса
Работа с датами и временем в R
Инструкции к упражнению
В рабочей области уже задана переменная jan_31 — дата 31 января текущего года.
- Для начала создайте последовательность из 1–12 периодов по 1 месяцу.
- Прибавьте
month_seqкjan_31. Обратите внимание на то, что происходит с месяцами, в которых нет 31-го числа. - Теперь прибавьте
month_seqкjan_31, используя оператор%m+%. - Вычтите
month_seqизjan_31, используя оператор%m-%.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# A sequence of 1 to 12 periods of 1 month
month_seq <- ___
# Add 1 to 12 months to jan_31
___ + ___
# Replace + with %m+%
___ ___ ___
# Replace + with %m-%
___ ___ ___