เรื่องยุ่งยากของเดือน
ymd("2018-01-31") + months(1) ควรคืนค่าอะไร? ควรเป็น 30, 31 หรือ 28 วันข้างหน้า? ลองดูได้เลย โดยทั่วไป lubridate จะคืนค่า วันที่เดิมของเดือน ในเดือนถัดไป แต่เนื่องจากวันที่ 31 กุมภาพันธ์ไม่มีอยู่จริง lubridate จึงคืนค่าว่าง NA
มี operator สำหรับการบวกและลบแบบอื่น ได้แก่ %m+% และ %m-% ซึ่งมีพฤติกรรมต่างออกไป แทนที่จะคืนค่า NA สำหรับวันที่ที่ไม่มีอยู่จริง operator เหล่านี้จะย้อนกลับไปยังวันสุดท้ายที่มีอยู่แทน
มาสำรวจพฤติกรรมดังกล่าวโดยลองสร้างลำดับวันสุดท้ายของทุกเดือนในปีนี้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทำงานกับวันที่และเวลาใน R
คำแนะนำการฝึกหัด
เราได้เตรียม jan_31 ซึ่งเป็นวันที่ 31 มกราคมของปีนี้ไว้ใน workspace ให้แล้ว
- เริ่มต้นด้วยการสร้างลำดับช่วงเวลา 1 เดือน จำนวน 1 ถึง 12 ช่วง
- บวก
month_seqเข้ากับjan_31สังเกตว่าเกิดอะไรขึ้นกับเดือนที่ไม่มีวันที่ 31 - บวก
month_seqเข้ากับjan_31โดยใช้ operator%m+% - ลอง ลบ
month_seqออกจากjan_31โดยใช้ operator%m-%
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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-%
___ ___ ___