НачатьНачать бесплатно

Сложности с месяцами

Что должна вернуть операция 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-%
___ ___ ___
Редактировать и запускать код