Tag: Flat files

  • 3 วิธีโหลด flat file ในภาษา R: แนะนำการใช้ utils, readr, และ data.table packages เพื่อโหลดข้อมูลจาก flat files — ตัวอย่างการทำงานกับ Fast Food Joint Nutrition

    3 วิธีโหลด flat file ในภาษา R: แนะนำการใช้ utils, readr, และ data.table packages เพื่อโหลดข้อมูลจาก flat files — ตัวอย่างการทำงานกับ Fast Food Joint Nutrition

    ในบทความนี้ เราจะมาดูวิธีใช้ 3 packages สำหรับโหลด flat file ในภาษา R กัน

    ถ้าพร้อมแล้ว ไปเริ่มกันเลย


    1. 📁 Flat File คืออะไร?
    2. 📦 3 Packages
    3. 1️⃣ Package #1: utils
    4. 2️⃣ Package #2: readr
    5. 3️⃣ Package #3: data.table
    6. 💪 Summary
    7. 📚 Further Reading
    8. 😺 GitHub
    9. 📃 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.72
    Pizza 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.0
    Pizza 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.22
    Pizza 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.11
    Pizza 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 ได้แก่:

    1. utils
    2. readr
    3. data.table

    เราไปดูวิธีใช้แต่ละ package กัน


    1️⃣ Package #1: utils

    utils เป็น package จาก base R ทำให้เราใช้งานได้โดยไม่ต้องโหลด package เพิ่มเติม

    utils มี 3 functions หลักสำหรับโหลด flat file ดังนี้:

    FunctionFor
    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.72
    Pizza 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.0
    Pizza 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.22
    Pizza 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.11
    Pizza 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 Functionread.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 ดังนี้:

    utilsreadrFor
    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.14
    2 Pizza Hut All Meals Country Fea… 178 g 408. 67.1 16.7 7.19 0 8.03 3.24
    3 Pizza Hut All Meals Double Chee… 143 g 423. 60.0 18.3 3.49 0 12.3 5.23
    4 Pizza Hut All Meals Double Pane… 174.5 g 474. 52.9 20.1 3.79 0 20.3 9.25
    5 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:


    📃 References