ในบทความนี้ เราจะมาดูวิธีใช้ 3 packages สำหรับโหลด flat file ในภาษา R กัน
ถ้าพร้อมแล้ว ไปเริ่มกันเลย
- 📁 Flat File คืออะไร?
- 📦 3 Packages
- 1️⃣ Package #1: utils
- 2️⃣ Package #2: readr
- 3️⃣ Package #3: data.table
- 💪 Summary
- 📚 Further Reading
- 😺 GitHub
- 📃 References
📁 Flat File คืออะไร?
Flat file คือ ไฟล์ plain text ที่เก็บข้อมูลแบบตาราง (tabular data)
Flat file ที่พบได้บ่อย เช่น:
- CSV (comma-separated values)
- TSV (tab-separated values)
ตัวอย่าง flat file (CSV):
Fast Food Joint Nutrition Values Dataset จาก Kaggle ซึ่งมีข้อมูลโภชนาการอาหารจาก restaurant chains อย่าง Pizza Hut, McDonald’s, และ Starbucks:
Company,Category,Product,Per Serve Size,Energy (kCal),Carbohydrates (g),Protein (g),Fiber (g),Sugar (g),Total Fat (g),Saturated Fat (g),Trans Fat (g),Cholesterol (mg),Sodium (mg)Pizza Hut,All Meals,Corn n Cheese (Personal),143.5 g,432.6,65.64,17.91,3.85,0.0,10.93,5.14,0.16,16.19,499.72Pizza Hut,All Meals,Country Feast (Personal),178 g,407.6,67.11,16.73,7.19,0.0,8.03,3.24,0.11,66.8,818.0Pizza Hut,All Meals,Double Cheese (Personal),143 g,423.33,59.97,18.26,3.49,0.0,12.27,5.23,0.18,19.75,638.22Pizza Hut,All Meals,Double Paneer Supreme (Personal),174.5 g,474.03,52.86,20.07,3.79,0.0,20.26,9.25,0.33,71.72,1128.11Pizza Hut,All Meals,Farmer`s Pick (Personal),177 g,408.16,53.93,19.91,2.46,0.0,12.53,4.9,0.14,48.09,942.67
📦 3 Packages
ในภาษา R เรามี 3 packages สำหรับโหลด flat file ได้แก่:
utilsreadrdata.table
เราไปดูวิธีใช้แต่ละ package กัน
1️⃣ Package #1: utils
utils เป็น package จาก base R ทำให้เราใช้งานได้โดยไม่ต้องโหลด package เพิ่มเติม
utils มี 3 functions หลักสำหรับโหลด flat file ดังนี้:
| Function | For |
|---|---|
read.csv() | โหลด CSV |
read.delim() | โหลด TSV |
read.table() | โหลด flat file ทั่วไป เช่น CSV, TSV, และอื่น ๆ |
ตัวอย่างการใช้งาน:
โหลด Fast Food Joint Nutrition Values Dataset แบบ CSV:
# Import with read.csv()
nutrition.csv <- read.csv("Nutrition_Value_Dataset.csv")
โหลด Fast Food Joint Nutrition Values Dataset แบบ TSV:
# Import with read.delim()
nutrition.delim <- read.delim("Nutrition_Value_Dataset.tsv")
โหลด flat file อื่น ๆ เช่น flat file ซึ่งใช้ “/” แบ่งข้อมูล:
nutrition.table <- read.table("Nutrition_Value_Dataset.txt",
header = TRUE,
sep = "/")
ตัวอย่างผลลัพธ์:
Company,Category,Product,Per Serve Size,Energy (kCal),Carbohydrates (g),Protein (g),Fiber (g),Sugar (g),Total Fat (g),Saturated Fat (g),Trans Fat (g),Cholesterol (mg),Sodium (mg)Pizza Hut,All Meals,Corn n Cheese (Personal),143.5 g,432.6,65.64,17.91,3.85,0.0,10.93,5.14,0.16,16.19,499.72Pizza Hut,All Meals,Country Feast (Personal),178 g,407.6,67.11,16.73,7.19,0.0,8.03,3.24,0.11,66.8,818.0Pizza Hut,All Meals,Double Cheese (Personal),143 g,423.33,59.97,18.26,3.49,0.0,12.27,5.23,0.18,19.75,638.22Pizza Hut,All Meals,Double Paneer Supreme (Personal),174.5 g,474.03,52.86,20.07,3.79,0.0,20.26,9.25,0.33,71.72,1128.11Pizza Hut,All Meals,Farmer`s Pick (Personal),177 g,408.16,53.93,19.91,2.46,0.0,12.53,4.9,0.14,48.09,942.67
Note:
read.csv() และ read.tsv() เป็น wrapper function ของ read.table() หรือ function ที่ทำให้เราใช้งาน read.table() ได้ง่ายขึ้น
นั่นหมายความว่า ทุกครั้งที่เราเรียกใช้ read.csv() และ read.delim() เรากำลังเรียกใช้ read.table() แบบนี้:
| Wrapper Function | read.table() |
|---|---|
read.csv() | read.table(file, header = TRUE, sep = ",") |
read.tsv() | read.table(file, header = TRUE, sep = "\\t") |
2️⃣ Package #2: readr
readr เป็น package ที่ทำงานคล้ายกับ utils แต่แทนที่โหลด flat file เป็น data frame, readr โหลดข้อมูลเป็น tibble ซึ่งเป็น data frame เว่อร์ชั่นที่มีประสิทธิภาพมากขึ้น
readr มี 3 functions หลักสำหรับโหลด flat file ซึ่งเทียบได้กับ utils ดังนี้:
| utils | readr | For |
|---|---|---|
read.csv() | read_csv() | โหลด CSV |
read.delim() | read_tsv() | โหลด TSV |
read.table() | read_delim() | โหลด flat file ทั่วไป เช่น CSV, TSV, และอื่น ๆ |
ตัวอย่างการใช้งาน:
ก่อนเริ่มใช้งาน เราต้องติดตั้งและโหลด readr ก่อน:
# Install
install.packages("readr")
# Load
library(readr)
จากนั้น เราสามารถเรียกใช้งาน functions ของ readr ได้เลย:
โหลด Fast Food Joint Nutrition Values Dataset แบบ CSV:
# Import with read_csv()
nutrition_csv <- read_csv("Nutrition_Value_Dataset.csv")
โหลด Fast Food Joint Nutrition Values Dataset แบบ TSV:
# Import with read_tsv()
nutrition_tsv <- read_tsv("Nutrition_Value_Dataset.tsv")
โหลด flat file อื่น ๆ เช่น flat file ซึ่งใช้ “/” แบ่งข้อมูล:
# Import with read_delim()
nutrition_delim <- read_delim("Nutrition_Value_Dataset.txt",
delim = "/")
ตัวอย่างผลลัพธ์:
# A tibble: 6 × 14 Company Category Product `Per Serve Size` `Energy (kCal)` `Carbohydrates (g)` `Protein (g)` `Fiber (g)` `Sugar (g)` `Total Fat (g)` `Saturated Fat (g)` <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>1 Pizza Hut All Meals Corn n Chee… 143.5 g 433. 65.6 17.9 3.85 0 10.9 5.142 Pizza Hut All Meals Country Fea… 178 g 408. 67.1 16.7 7.19 0 8.03 3.243 Pizza Hut All Meals Double Chee… 143 g 423. 60.0 18.3 3.49 0 12.3 5.234 Pizza Hut All Meals Double Pane… 174.5 g 474. 52.9 20.1 3.79 0 20.3 9.255 Pizza Hut All Meals Farmer`s Pi… 177 g 408. 53.9 19.9 2.46 0 12.5 4.9 6 Pizza Hut All Meals Margherita … 130.5 g 362. 50.7 15.9 4.08 0 10.6 3.86# ℹ 3 more variables: `Trans Fat (g)` <dbl>, `Cholesterol (mg)` <dbl>, `Sodium (mg)` <dbl>
Note:
เช่นเดียวกับ utils, read_csv() และ read_tsv() เป็น wrapper function ของ read_delim()
3️⃣ Package #3: data.table
สุดท้าย data.table เป็น data manipulation package ที่เน้นความเร็วในการประมวลผล
data.table มี function สำหรับโหลด flat file ที่ใช้ง่ายและรวดเร็วกว่า read.table() และ read_delim() ได้แก่ fread() (ย่อมาจาก fast read)
ข้อมูลที่โหลดด้วย fread() จะอยู่ในรูป data.table ซึ่งเป็นประเภท data frame ที่ทรงพลังกว่า
ตัวอย่างการใช้งาน:
เช่นเดียวกับ readr เราต้องติดตั้งและโหลด data.table ก่อนเริ่มใช้งาน:
# Install
install.packages("data.table")
# Load
library(data.table)
จากนั้น เราสามารถเรียกใช้งาน fread() เพื่อโหลดไฟล์ได้:
โหลด Fast Food Joint Nutrition Values Dataset แบบ CSV:
# Import CSV with fread()
nutrition_fread_csv <- fread("Nutrition_Value_Dataset.csv")
โหลด Fast Food Joint Nutrition Values Dataset แบบ TSV:
# Import TSV with fread()
nutrition_fread_tsv <- fread("Nutrition_Value_Dataset.tsv")
โหลด flat file อื่น ๆ เช่น flat file ซึ่งใช้ “/” แบ่งข้อมูล:
# Import TXT with "/" separator with fread()
nutrition_fread_txt <- fread("Nutrition_Value_Dataset.txt",
sep = "/")
ตัวอย่างผลลัพธ์:
Company Category Product Per Serve Size Energy (kCal) Carbohydrates (g) Protein (g) Fiber (g) Sugar (g) Total Fat (g) Saturated Fat (g) Trans Fat (g) Cholesterol (mg) Sodium (mg)
<char> <char> <char> <char> <num> <num> <num> <num> <num> <num> <num> <num> <num> <num>
1: Pizza Hut All Meals Corn n Cheese (Personal) 143.5 g 432.60 65.64 17.91 3.85 0 10.93 5.14 0.16 16.19 499.72
2: Pizza Hut All Meals Country Feast (Personal) 178 g 407.60 67.11 16.73 7.19 0 8.03 3.24 0.11 66.80 818.00
3: Pizza Hut All Meals Double Cheese (Personal) 143 g 423.33 59.97 18.26 3.49 0 12.27 5.23 0.18 19.75 638.22
4: Pizza Hut All Meals Double Paneer Supreme (Personal) 174.5 g 474.03 52.86 20.07 3.79 0 20.26 9.25 0.33 71.72 1128.11
5: Pizza Hut All Meals Farmer`s Pick (Personal) 177 g 408.16 53.93 19.91 2.46 0 12.53 4.90 0.14 48.09 942.67
6: Pizza Hut All Meals Margherita (Personal) 130.5 g 361.73 50.69 15.93 4.08 0 10.58 3.86 0.12 26.47 713.82
💪 Summary
ในบทความนี้ เราได้ทำความรู้จักกับ 3 packages สำหรับโหลด flat file ในภาษา R:
Package #1. utils:
read.csv()read.delim()read.table()
Package #2. readr:
read_csv()read_tsv()read_delim()
Package 3. data.table:
fread()
📚 Further Reading
สำหรับคนที่ต้องการศึกษาเพิ่มเติม สามารถอ่านคู่มือการใช้ functions ในบทความนี้ได้ดังนี้:
😺 GitHub
ดู code ทั้งหมดในบทความนี้ได้ที่ GitHub:
