月份最棘手的地方
ymd("2018-01-31") + months(1) 應該回傳什麼?應該是未來的 30、31,還是 28 天呢?試試看吧。一般來說,lubridate 會回傳下個月的同一個「月中的日期」,但因為 2 月沒有第 31 天,lubridate 會回傳遺漏值 NA。
有另一些加減運算子:%m+% 和 %m-%,它們的行為不同。遇到不存在的日期時,不會回傳 NA,而是回滾到該月最後一個存在的日期。
你將嘗試產生今年每個月最後一天的序列,來觀察它們的行為。
本練習屬於課程
在 R 中處理日期與時間
練習說明
我們已經在你的工作空間放入今年 1 月 31 日的日期 jan_31。
- 先建立一個由 1 到 12、期間長度為 1 個月的序列。
- 將
month_seq加到jan_31。注意那些沒有第 31 天的月份會發生什麼事。 - 接著用
%m+%運算子把month_seq加到jan_31。 - 嘗試用
%m-%運算子,從jan_31減去month_seq。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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-%
___ ___ ___