R

รีวิวเทคนิค Data Wrangling ง่ายๆใน R

อธิบายการใช้งาน dplyr เพื่อทำ data wrangling และการ join tables ใน R

What is it?

Data wrangling คือทักษะการปรับเปลี่ยนหน้าตาข้อมูลให้อยู่ในรูปแบบที่เหมาะสมกับการทำ data analysis หรือ data visualization อื่นๆต่อไป บทความวันนี้เราจะแนะนำการใช้ฟังชั่นใน package dplyr ซึ่งเป็นฟังชั่นแรกๆที่เราแนะนำให้คนที่เพิ่งเริ่มเขียน R ทำให้เป็นก่อนเลย

ติดตั้งและเรียกใช้งานฟังชั่นใน package dplyr ด้วยโค้ดนี้

Foundation

dplyr มี functions หลักที่ใช้ในการทำ data wranling อยู่ 6 functions เริ่มจากพื้นฐานก่อน

  • select ใช้เลือกคอลั่มที่เราต้องการ
  • filter ใช้ฟิลเตอร์แถวที่เราต้องการด้วยเงื่อนไขต่างๆ
  • arrange ใช้เรียงข้อมูล i.e. sort rows

เราใช้ pipe operator (%>%) เพื่อเขียนเชื่อมโค้ดเข้าด้วยกันแบบนี้ ลอง copy โค้ดไปลองเล่นใน RStudio ทิป – ฟังชั่น filter() สามารถใส่ได้มากกว่าหนึ่งเงื่อนไข โดยใช้ & หรือ | มาช่วย

อีกสามฟังชั่นใน dplyr ที่ควรใช้ให้เป็นคือ

  • mutate ใช้สร้างคอลั่มใหม่
  • summarise ใช้สรุปผลสถิติของคอลั่มที่เราเลือก
  • group_by ใช้คู่กับ summarise เพื่อสรุปผลสถิติตามกลุ่ม

โค้ด line 12-14 เราสั่งให้ R จับกลุ่ม mtcars ด้วยคอลั่ม am group_by(am) แล้วค่อยหาค่าเฉลี่ย mean(hp) ตามกลุ่ม (auto vs. manual)

Join

dplyr มี functions ที่ใช้ในการ join tables อยู่สามแบบหลักๆคือ left_join, inner_join และ full_join โดย concept จะเหมือนกับการเขียน SQL เลย เขียนเป็น venn diagram ได้แบบนี้

Source: DataRockie

อ่านบทความเก่าของเรา – หัดเขียน SQL เป็นใน 10 นาที

มาลองดูโค้ดตัวอย่างใน R เราสร้าง data frame ง่ายๆขึ้นมาสองอัน df1 มีคอลั่ม {id, names} และ df2 มีคอลั่ม {id, grades} เราสามารถเขียนโค้ดเพื่อ join สอง df นี้ด้วยคอลั่ม id

syntax การเขียน join ใน R คือ *_join(table1, table2, by = "column") หน้าตาของ dataframe ที่ได้จากการ join แต่ละแบบเหมือนในรูปด้านล่าง โดย <NA> ในภาษา R คือค่า missing value (i.e. ไม่สามารถ map ค่าได้จากการ join df1 df2 เข้าด้วยกัน)

เพื่อนๆสามารถอ่านการใช้งานเพิ่มเติมและดาวน์โหลด cheat sheet ของ dplyr ได้ที่นี่

functions ที่เราแนะนำในบทความวันนี้เป็นตัวหลักที่ใช้กันเยอะมาก ฝึกใช้ให้คล่อง แล้วการทำ data wrangling กับ data frame จะไม่ใช่เรื่องยากเลย Happy wrangling!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.