การดึงค่าเพื่อกรองและสรุปข้อมูล
อีกเหตุผลหนึ่งในการดึงองค์ประกอบของ datetime คือเพื่อช่วยกรองข้อมูลหรือสร้างสรุปผล ตัวอย่างเช่น หากสนใจเฉพาะข้อมูลที่บันทึกในวันธรรมดา (ไม่รวมวันหยุดสุดสัปดาห์) ก็สามารถดึงวันในสัปดาห์แล้วกรองออกได้ เช่น wday(date) %in% 2:6
จากแบบฝึกหัดที่แล้ว พบว่าเดือนมกราคม กุมภาพันธ์ และมีนาคม เป็นช่วงที่อากาศอบอุ่นและเหมาะแก่การไปเยือนเมืองโอ๊คแลนด์ แต่จะต้องพกเสื้อกันฝนไปด้วยไหม?
ในแบบฝึกหัดนี้จะหาคำตอบกัน โดยใช้ข้อมูลรายชั่วโมงเพื่อคำนวณว่าในแต่ละเดือนมีกี่วันที่มีฝนตกในช่วงกลางวัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทำงานกับวันที่และเวลาใน R
คำแนะนำการฝึกหัด
- สร้างคอลัมน์ใหม่สำหรับชั่วโมงและเดือนของข้อมูลจาก
datetimeโดยตั้งค่าให้แสดงชื่อเดือน - กรองเฉพาะข้อมูลในช่วงกลางวัน โดยให้ชั่วโมงมีค่ามากกว่าหรือเท่ากับ
8และน้อยกว่าหรือเท่ากับ22 - จัดกลุ่มข้อมูลโดยเรียงตาม
monthก่อน แล้วตามdateจากนั้นสรุปผลโดยใช้any()กับคอลัมน์rainyผลลัพธ์ที่ได้จะเป็นค่าหนึ่งค่าต่อวัน - สรุปผลอีกครั้งโดยหาผลรวมของ
any_rainผลลัพธ์ที่ได้จะเป็นค่าหนึ่งค่าต่อเดือน
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create new columns hour, month and rainy
akl_hourly <- akl_hourly %>%
mutate(
___ = ___(datetime),
___ = ___(datetime, ___),
rainy = weather == "Precipitation"
)
# Filter for hours between 8am and 10pm (inclusive)
akl_day <- akl_hourly %>%
filter(___, ___)
# Summarise for each date if there is any rain
rainy_days <- akl_day %>%
group_by(___, ___) %>%
summarise(
any_rain = ___(rainy)
)
# Summarise for each month, the number of days with rain
rainy_days %>%
summarise(
days_rainy = ___(any_rain)
)