Kom igångKom igång gratis

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

Visa kurs

Ö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_seq till jan_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_seq till jan_31 med operatorn %m+%.
  • Prova att subtrahera month_seq från jan_31 med 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-%
___ ___ ___
Redigera och kör kod