เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

เรื่องยุ่งยากของเดือน

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-%
___ ___ ___
แก้ไขและรันโค้ด