Miesiące potrafią zaskoczyć
Co powinno zwrócić wyrażenie ymd("2018-01-31") + months(1)? Czy wynik powinien być 30, 31 czy 28 dni w przyszłości? Sprawdź to. Ogólnie rzecz biorąc, lubridate zwraca ten sam dzień miesiąca w następnym miesiącu – ale ponieważ 31 lutego nie istnieje, lubridate zwraca brakującą wartość: NA.
Istnieją alternatywne operatory dodawania i odejmowania: %m+% oraz %m-%, które działają inaczej. Zamiast zwracać NA dla nieistniejącej daty, cofają się do ostatniego istniejącego dnia.
Zbadasz ich działanie, próbując wygenerować sekwencję ostatnich dni każdego miesiąca w bieżącym roku.
To ćwiczenie jest częścią kursu
Praca z datami i czasem w R
Instrukcje do ćwiczenia
W przestrzeni roboczej znajdziesz zmienną jan_31 zawierającą datę 31 stycznia bieżącego roku.
- Zacznij od utworzenia sekwencji od 1 do 12 okresów wynoszących 1 miesiąc.
- Dodaj
month_seqdojan_31. Zwróć uwagę, co się dzieje z miesiącami, w których 31. dzień nie istnieje. - Teraz dodaj
month_seqdojan_31za pomocą operatora%m+%. - Spróbuj odjąć
month_seqodjan_31za pomocą operatora%m-%.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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-%
___ ___ ___