Det knepiga med månader
Vad bör ymd("2018-01-31") + months(1) returnera? Ska det vara 30, 31 eller 28 dagar framåt i tiden? Prova själv. Normalt returnerar lubridate samma dag i månaden för nästa månad, men eftersom den 31 februari inte existerar returnerar lubridate ett saknat värde, NA.
Det finns alternativa additions- och subtraktionsoperatorer: %m+% och %m-%, som beter sig annorlunda. I stället för att returnera NA för ett datum som inte existerar rullar de tillbaka till det senaste giltiga datumet.
Du ska utforska hur de fungerar genom att generera en sekvens för den sista dagen i varje månad det här året.
Den här övningen är en del av kursen
Arbeta med datum och tider i R
Övningsinstruktioner
Vi har lagt in jan_31, datumet för den 31 januari i år, i din arbetsmiljö.
- Börja med att skapa en sekvens med 1 till 12 perioder om 1 månad.
- Addera
month_seqtilljan_31. Lägg märke till vad som händer för de månader där den 31:a inte existerar. - Addera nu
month_seqtilljan_31med operatorn%m+%. - Prova att subtrahera
month_seqfrånjan_31med operatorn%m-%.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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-%
___ ___ ___