แนะนำ dtplyr: package เชื่อม dplyr และ data.table เพื่อการทำ data wrangling กับข้อมูลขนาดใหญ่ที่ง่ายและรวดเร็ว — ตัวอย่างจาก mtcars dataset

ในบทความนี้ เรามาความรู้จักกับ package ในภาษา R ที่เรียกว่า dtplyr กัน


  1. 🏎️ dtplyr คืออะไร?
  2. 🧑‍💻 วิธีใช้ dytplyr
    1. 1️⃣ ขั้นที่ 1. Install & Load dtplyr
    2. 2️⃣ ขั้นที่ 2. Create a Lazy data.table
    3. 3️⃣ ขั้นที่ 3. Execute the Syntax
  3. 😺 GitHub
  4. 📃 References
  5. ✅ R Book for Psychologists: หนังสือภาษา R สำหรับนักจิตวิทยา

🏎️ dtplyr คืออะไร?

dtplyr เป็น package ที่เชื่อม 2 libraries ยอดนิยมสำหรับ data wrangling เข้าด้วยกัน ได้แก่:

.

Library #1. dplyr ซี่งมี verb-based syntax ที่ใช้งานง่าย

เช่น จาก mtcars dataset เลือกรถเกียร์ manual (am == 1) ที่มี miles/gallon (mpg) ตั้งแต่ 20 ขึ้นไป โดยเรียงจากมากไปน้อย:

# dplyr
mtcars |>
  filter(am == 1 & mpg >= 20) |>
  select(model, mpg) |>
  arrange(desc(mpg))

Note: mtcars ถูกปรับให้มี column ชื่อ model (ดู code ในการเพิ่ม column ได้ใน GitHub)

.

Library #2. data.table ซึ่งมี syntax ที่เข้าใจยากกว่า:

# data.table
mtcars_dt[am == 1 & mpg >= 20, .(model, mpg)][order(-mpg)]

Note: mtcars_dt เป็น dataset ที่ถูกเปลี่ยนจาก data.frame เป็น data.table object เพื่อใช้งานกับ data.table

แต่มีจุดเด่น คือ ประมวลผลได้เร็ว เหมาะกับการทำงานกับ data ขนาดใหญ่

.

dtplyr เชื่อม dplyr เข้ากับ data.table โดยการแปล dplyr syntax ให้เป็น data.table syntax ทำให้เราทำงานได้ง่ายและรวดเร็ว


🧑‍💻 วิธีใช้ dytplyr

เราสามารถใช้ dtplyr ได้ใน 3 ขั้นตอนง่าย ๆ:

  1. Install and load dtplyr
  2. Create a lazy data.table
  3. Execute the syntax

.

1️⃣ ขั้นที่ 1. Install & Load dtplyr

ในการใช้งาน dtplyr เราต้องเรียกใช้ dplyr ด้วยเสมอ

ดังนั้น ในการติดตั้ง เราต้องติดตั้งทั้ง dtplyr และ dplyr:

# Install
install.packages("dplyr")
install.packages("dtplyr")

เมื่อติดตั้งแล้ว ให้เราเรียกใช้งาน dtplyr และ dplyr ทุกครั้งที่เริ่ม session ในการทำงาน:

# Load
library(dplyr)
library(dtplyr)

Note: คู่มือการใช้ dtplyr แนะนำให้โหลด data.table ด้วย เพื่อใช้ functions ของ data.table ในการทำงาน

.

2️⃣ ขั้นที่ 2. Create a Lazy data.table

หลังเรียกใช้งาน dtplyr ให้เราสร้าง dataset ที่เป็น lazy data.table object ขึ้นมา เพื่อช่วยให้ dtplyr เปลี่ยนคำสั่งของ dplyr เป็นคำสั่งของ data.table ได้:

# Convert mtcars dataset into lazy data.table object
mtcars_ldt <- lazy_dt(mtcars)

.

3️⃣ ขั้นที่ 3. Execute the Syntax

ในขั้นสุดท้าย เราสามารถเริ่มทำงานโดยใช้ syntax ของ dplyr ได้เลย:

# Execute the syntax
mtcars_ldt |>
  filter(am == 1 & mpg >= 20) |>
  select(model, mpg) |>
  arrange(desc(mpg)) |>
  as.data.table()

ผลลัพธ์:

             model   mpg
            <char> <num>
 1: Toyota Corolla  33.9
 2:       Fiat 128  32.4
 3:    Honda Civic  30.4
 4:   Lotus Europa  30.4
 5:      Fiat X1-9  27.3
 6:  Porsche 914-2  26.0
 7:     Datsun 710  22.8
 8:     Volvo 142E  21.4
 9:      Mazda RX4  21.0
10:  Mazda RX4 Wag  21.0

จะสังเกตว่า ใน code บรรทัดสุดท้าย เราเพิ่ม as.data.table() เข้ามาเพื่อบอกให้ dtplyr รู้ว่า เราเขียน syntax เสร็จแล้ว และพร้อมให้แปลงให้เป็น data.table syntax

ทั้งนี้ ถ้าเราเขียนโดยไม่มี as.data.table():

# Execute the syntax, without as.data.table()
mtcars_ldt |>
  filter(am == 1 & mpg >= 20) |>
  select(model, mpg) |>
  arrange(desc(mpg))

เราจะได้ผลลัพธ์ที่เป็นแค่ preview ที่ไม่สามารถนำไปใช้งานต่อได้:

  model            mpg
  <chr>          <dbl>
1 Toyota Corolla  33.9
2 Fiat 128        32.4
3 Honda Civic     30.4
4 Lotus Europa    30.4
5 Fiat X1-9       27.3
6 Porsche 914-2   26  
# ℹ 4 more rows
# ℹ Use `print(n = ...)` to see more rows

ดังนั้น ถ้าเราต้องการผลลัพธ์ทั้งหมด เราต้องใช้ as.data.table() ในการรันคำสั่งทุกครั้ง

Note: เราสามารถใช้คำสั่งอื่น ๆ แทน as.data.table() ได้ โดยจะให้ผลลัพธ์ที่แตกต่างกันไปดังนี้:

Functionผลลัพธ์ที่ส่งกลับมา
as.data.table()data.table
as.data.frame()data.frame
as.tibble()tibble
collect()tibble
pull()Single column

😺 GitHub

ดู code ทั้งหมดในบทความนี้ได้ที่ GitHub


📃 References


✅ R Book for Psychologists: หนังสือภาษา R สำหรับนักจิตวิทยา

📕 ขอฝากหนังสือเล่มแรกในชีวิตด้วยนะครับ 😆

🙋 ใครที่กำลังเรียนจิตวิทยาหรือทำงานสายจิตวิทยา และเบื่อที่ต้องใช้ software ราคาแพงอย่าง SPSS และ Excel เพื่อทำข้อมูล

💪 ผมขอแนะนำ R Book for Psychologists หนังสือสอนใช้ภาษา R เพื่อการวิเคราะห์ข้อมูลทางจิตวิทยา ที่เขียนมาเพื่อนักจิตวิทยาที่ไม่เคยมีประสบการณ์เขียน code มาก่อน

ในหนังสือ เราจะปูพื้นฐานภาษา R และพาไปดูวิธีวิเคราะห์สถิติที่ใช้บ่อยกัน เช่น:

  • Correlation
  • t-tests
  • ANOVA
  • Reliability
  • Factor analysis

🚀 เมื่ออ่านและทำตามตัวอย่างใน R Book for Psychologists ทุกคนจะไม่ต้องพึง SPSS และ Excel ในการทำงานอีกต่อไป และสามารถวิเคราะห์ข้อมูลด้วยตัวเองได้ด้วยความมั่นใจ

แล้วทุกคนจะแปลกใจว่า ทำไมภาษา R ง่ายขนาดนี้ 🙂‍↕️

👉 สนใจดูรายละเอียดหนังสือได้ที่ meb:

Comments

Leave a comment