Bắt đầu ngayBắt đầu miễn phí

Đ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+%%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

Xem khóa học

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_seq vào jan_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_seq vào jan_31 bằng toán tử %m+%.
  • Thử trừ month_seq khỏi jan_31 bằ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-%
___ ___ ___
Chỉnh sửa và Chạy Mã