DataFrame Manipulation Using R

ถ้าใครยังไม่รู้ว่า R คืออะไร?

R คือ programming language ที่เกิดมาเพื่อจัดการ data frame และทำงานด้าน data analysis โดยเฉพาะ บทความวันนี้เราจะมาสอนใช้งาน 5 verbs (functions) ที่ R user ใช้กันทุกวันสำหรับการจัดการ data frame ง่ายๆ

สำหรับเพื่อนๆที่อยากทำตาม tutorial นี้ ต้องลง R และ RStudio Desktop ให้เสร็จก่อน ดาวน์โหลดและใช้งานฟรีทั้งสองโปรแกรมได้ที่ลิ้งนี้เลย R & RStudio

Data Frame คืออะไร?

data frame คือ Excel table ทั่วไปนี้เอง เวลาเรา import เข้าไปใน R เราจะเรียกมันว่า data frame ประกอบด้วย

  • column คือตัวแปรแต่ละตัว
  • row คือ record (observation) เช่น ลูกค้าแต่ละคน หรือ transaction แต่ละอัน เป็นต้น

เปิดโปรแกรม RStudio ขึ้นมา แล้วพิมพ์โค้ดนี้ลงไปใน console View(mtcars) จะเห็นหน้าตาของ built-in dataset ชื่อว่า mtcars data frame หรือจะพิมพ์แค่ mtcars ลงไปใน console เลยก็ได้ ลองซิ!

mtcars
ตัวอย่าง built-in dataframe ใน R (mtcars)

Easy Installation

tutorial วันนี้เราจะสอนใช้ package dplyr ในตำนานของทีมงาน RStudio เพื่อนๆสามารถดาวน์โหลด dplyr มาใช้งานได้ง่ายๆด้วยโค้ด install.packages("dplyr") พอลงเสร็จเรียบร้อยแล้วก็เเรียกใช้งาน dplyr ด้วยคำสั่ง library(dplyr)


Five Verbs to Rule Them All

5 functions หลักของ dplyr ประกอบด้วย

  • select() – ใช้ในการเลือกคอลั่มที่เราต้องการ
  • filter() – ใช้เลือก record (แถว) ด้วยเงื่อนไขที่เราสร้าง
  • arrange() – ใช้เรียงข้อมูลจากต่ำไปสูง (default)
  • mutate() – ใช้สร้างคอลั่มใหม่
  • summarise() – ใช้สรุปผลสถิติเบื้องต้นของคอลั่มใน data frame

ลองดูตัวอย่างการเขียนได้ด้านล่าง ทั้ง 5 functions มี pattern การเขียนเหมือนกันเลย โดย argument แรกของฟังชั่นคือชื่อ data frame ที่เราต้องการ manipulate

## เลือกคอลั่ม mpg, hp, wt จาก mtcars dataframe
select(mtcars, mpg, hp, wt)

## สร้างเงื่อนไขในการ filter rows ของ dataframe
filter(mtcars, hp <= 100)
filter(mtcars, am == 0)

## เรียงข้อมูล by row ใน dataframe ของเราจากต่ำไปสูง
## หรือเขียน desc(column) เพื่อเรียงจากสูงไปต่ำ
arrange(mtcars, hp)
arrange(mtcars, desc(hp))

## mutate เพื่อสร้างคอลั่มใหม่
mutate(mtcars, hp_half = hp/2)
mutate(mtcars, wt_double = wt*2)

## summarise เพื่อสรุปผลสถิติเบื้องต้น เช่น mean, sd, min, max
summarise(mtcars, mean(hp), sd(hp), min(hp), max(hp))

เพื่อนๆสามารถ copy code ตัวอย่างด้านบนไปลองแปะใน console ของ RStudio ได้เลย ฝึกใช้ 5 verbs นี้ให้คล่อง แล้วการทำงานพื้นฐานกับ data frame จะไม่ใช่เรื่องยากอีกต่อไป


Introducing Pipe Operator

R Programmer จะมีอักขระพิเศษที่ใช้เชื่อมโค้ดของเราเข้าด้วยกัน (ชีวิตดีขึ้นเยอะถ้าใช้ pipe operator %>%) ตัวอย่างการใช้งานง่ายๆแบบนี้

mtcars %>%
    select(mpg, hp, wt) %>%
    filter(hp <= 100) %>%
    arrange(desc(hp)) %>%
    mutate(hp_2 = log(hp))

โค้ดด้านบน เราเชื่อม select %>% filter %>% arrange %>% mutate เข้าด้วยกัน R จะรันผลตั้งแต่ line บนสุดลงมาเรื่อยๆ

    mpg    hp    wt  hp_2
  <dbl> <dbl> <dbl> <dbl>
1  21.5    97  2.46  4.57
2  22.8    95  3.15  4.55
3  22.8    93  2.32  4.53
4  26      91  2.14  4.51
5  32.4    66  2.2   4.19
6  27.3    66  1.94  4.19
7  33.9    65  1.84  4.17
8  24.4    62  3.19  4.13
9  30.4    52  1.62  3.95

อ่านได้แบบนี้ เลือกสามคอลั่ม mpg, hp, wt จาก mtcars data frame แล้วก็ filter เอาเฉพาะรถยนต์ที่มี hp <= 100 แล้วก็เรียงข้อมูลจากสูงไปต่ำ (descending order) ด้วยคอลั่ม hp แล้วค่อยสร้างคอลั่มใหม่ชื่อว่า hp_2 ด้วยฟังชั่น log(hp) จบ !!


More to Learn

  • 5 verbs สำคัญสำหรับ R user เพื่อทำ data manipulation คือ select, filter, arrange, mutate, summarise
  • %>% (pipe operator) ใช้เพื่อเชื่อมโค้ดของเราเข้าด้วยกัน สบายขึ้นเยอะ
  • อ่านเพิ่มเติมเรื่อง A Grammar of Data Manipulation (dplyr)

package dplyr ยังทำอะไรได้อีกเยอะมาก อยากเรียนมากกว่านี้ สมัครเรียนฟรี Intro to R กับเราได้ที่ https://datarockie.com

ชอบกด Like ใช่กด Share ให้เพื่อนได้อ่านด้วยนะคร้าบ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s