การระบุลำดับด้วย `parse_date_time()`
ถ้าข้อมูลวันที่อยู่ในลำดับแปลก ๆ อย่างเช่น dym_msh ล่ะ? ไม่มีฟังก์ชันที่ตั้งชื่อเฉพาะสำหรับลำดับนั้น แต่นั่นคือจุดที่ parse_date_time() เข้ามาช่วย ฟังก์ชันนี้รับอาร์กิวเมนต์เพิ่มเติมชื่อ orders ซึ่งช่วยให้ระบุลำดับของส่วนประกอบในวันที่ได้
ตัวอย่างเช่น หากต้องการแปลง "2010 September 20th" สามารถใช้ parse_date_time("2010 September 20th", orders = "ymd") ซึ่งให้ผลเทียบเท่ากับการใช้ฟังก์ชัน ymd() จากแบบฝึกหัดที่แล้ว
ข้อดีอย่างหนึ่งของ parse_date_time() คือรองรับอักขระรูปแบบได้มากกว่า เช่น ระบุชื่อวันด้วย A ใช้ I สำหรับเวลาแบบ 12 ชั่วโมง ระบุตัวบอก am/pm ด้วย p และอื่น ๆ อีกมาก ดูรายการทั้งหมดได้ที่หน้าช่วยเหลือ ?parse_date_time
อีกข้อดีที่สำคัญคือสามารถระบุ orders เป็นเวกเตอร์ได้ ทำให้แปลงวันที่ที่มีหลายรูปแบบในคราวเดียวกันได้
ลองฝึกใช้ในแบบฝึกหัดนี้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทำงานกับวันที่และเวลาใน R
คำแนะนำการฝึกหัด
xเป็น datetime ที่ซับซ้อนกว่าเดิม ใช้คำใบ้ในคำแนะนำเพื่อแปลงxtwo_ordersมีลำดับสองแบบที่แตกต่างกัน แปลงทั้งสองโดยระบุ order เป็นc("mdy", "dmy")- แปลง
short_datesด้วยorders = c("dOmY", "OmY", "Y")วันที่ที่ไม่ได้ระบุเดือนหรือวันจะเกิดอะไรขึ้น?
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Specify an order string to parse x
x <- "Monday June 1st 2010 at 4pm"
___(x, orders = "___")
# Specify order to include both "mdy" and "dmy"
two_orders <- c("October 7, 2001", "October 13, 2002", "April 13, 2003",
"17 April 2005", "23 April 2017")
parse_date_time(two_orders, orders = ___)
# Specify order to include "dOmY", "OmY" and "Y"
short_dates <- c("11 December 1282", "May 1372", "1253")
parse_date_time(short_dates, orders = ___)