Điểm khó khi làm việc với tháng
ymd("2018-01-31") + months(1) sẽ trả về gì? Sẽ là 30, 31 hay 28 ngày sau? Hãy thử xem. Nói chung lubridate sẽ trả về cùng một ngày trong tháng ở tháng kế tiếp, nhưng vì ngày 31 tháng 2 không tồn tại nên lubridate trả về giá trị thiếu, NA.
Có các toán tử cộng và trừ thay thế: %m+% và %m-% với hành vi khác biệt. Thay vì trả về NA cho một ngày không tồn tại, chúng sẽ lùi về ngày cuối cùng có tồn tại.
Bạn sẽ khám phá hành vi này bằng cách thử tạo một dãy là ngày cuối cùng của mỗi tháng trong năm nay.
Bài tập này là một phần của khóa học
Làm việc với Ngày và Giờ trong R
Hướng dẫn bài tập
Chúng tôi đã đặt jan_31, ngày 31 tháng 1 của năm nay, trong workspace của bạn.
- Bắt đầu bằng cách tạo một dãy 1 đến 12 khoảng thời gian, mỗi khoảng là 1 tháng.
- Cộng
month_seqvàojan_31. Lưu ý điều gì xảy ra với bất kỳ tháng nào không có ngày 31 - Bây giờ cộng
month_seqvàojan_31bằng toán tử%m+%. - Thử trừ
month_seqkhỏijan_31bằng toán tử%m-%.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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-%
___ ___ ___