Data Transformation คือ Process ที่จะแปลงข้อมูลจากแบบหนึ่งไปเป็นแบบหนึ่ง
เริ่มจาก การนำไฟล์ csv เข้าไปใน R ก่อนละกันนะ
จะมีpackage ที่ใช้กันบ่อยๆสำหรับ Data Science คือ tidyverse
install.packages("tidyverse")
Tidyverse มีอะไรบ้างล่ะ มีดังนี้
ซึ่งเรามาเริ่มตัวแรกกันก่อนเลย
Read CSV Files
- เราต้องโหลด readr ก่อน
library(readr) - ใช้ฟังชั่นนี้
read_csv("filename.csv")
Select Column
อันดับแรกเรามารู้จัก Pipe Operator กัน ก่อน
Pipe Operator นั้นจะมากับ dplyr เพราะชั้นนั้นจะต้องโหลด dplyr กันก่อน
# load dplyr
library(dplyr)
Pipe Operator (%>%) จะใช้ในการเขียน Pipe line เพื่อเชื่อมฟังชั่นเข้าด้วยกัน
เรามาลองใช้กันกับการ select เลยละกัน
# select columns
select(mtcars, mpg, wt, hp) #แบบปกติ
mtcars %>% select(mpg, wt, hp) #แบบใช้ Pipe Operator
ข้อดีของการใช้ Pipe Operator คือ มันจะเชื่อมได้หลายๆฟังชั่น เช่น
df %>% select() %>% filter() %>% mutate() %>% arrange()
Filter Data
การ Filter นั้นเราทพได้โยการใช้ฟังชั่น filter() ได้เลย
imdb %>%
filter(SCORE >= 9.0)
ยังสามารถใช้กับ String ได้ด้วยนะ (อันนี้เป็น Case Sensitive นะ)
imdb %>%
filter(rating == "R")
Create New Column
การสร้าง column เพิ่ม เราสามารถใช้ mutate() ได้เลย
imdb %>%
mutate(score_group = if_else(score >= 9, "High Rating","Low Rating"))
Arrange Data
สามารถใช้ arrange() ได้เลย
imdb %>%
arrange((length)) %>% #อันนี้จะไล่จาก น้อยไปมาก
head(10)
---------------------------------------------------
imdb %>%
arrange(desc(length)) %>% #อันนี้จะไล่จาก มากไปน้อย
head(10)
## length เป็น column เด้อ
Summary Statistic
อันนี้จะเป็นการหา ค่า min, max, average, mean, sd, sum and n โดยการใช้ summarise()
imdb %>%
group_by(rating) %>%
summarise(mean_length = mean(length),
sum_length = sum(length),
sd_length = sd(length),
min_length = min(length),
max_length = max(length),
n = n())
**group by กับ summarise นั้นจะใช้ได้กันตลอดเลยนะ
Join Table
วิธี Jon table นั้นไม่ยากเลยเพียงแค่ใช้ inner_join()
favourit_films %>%
inner_join(imdb,by = c("id","no"))
#favourit_films เป็น table 2
#imdb เป็น table 1
#ใช้ by เชื่อมกันด้วย id และ no
Export CSV File
ในเมื่อเรา Tranform Data มาแล้ว เราก็อยากจะเอาออกไปใช้ใช่มั้ยล่ะ เพราะงั้นทำได้ง่ายๆ เพียงใช้ฟังก์ชั่นนี้ write.csv() ซึ่งจะเป็น based R function ไม่จำเป็นต้องโหลด Library เพิ่ม
write.csv("imdb_prep")
#imdb_prep เป็นตัวแปร ที่บันทึก Data ที่อยากจะเอาไว้ใช้เอาไว้
Tibble
Tibble นั้นคล้ายกับ Dataframe เลย แต่จะแสดงผลสวยกว่า ซึ่งเป็นที่นิยมมากกว่าด้วยนะ
library(tibble)
df_tibble <- tibble(id = 1:3,name = c("a","b","c"))
Sample Data
Sample Data นั่นเป็นการสุ่ม Data ขึ้นมา จะใช้ sample_n(),sample()
set.seed(25) #เราสามารถ set seed เพื่อให้สุ่มเหมือนเดิมได้ด้วย
sample_n(mtcars,size = 5)
Slice
Slice ใช้ดึง rows ที่เราต้องการจาก dataframe/tibble
mtcars %>%
slice(1:5)
mtcars %>%
slice(c(1,3,5))
Pivot longer
เป็น function ใน tidyr package ที่จะเปลี่ยน dataframe จาก wide format เป็น long format
library(tidyr)
df %>% pivot_longer(cols=c('var1', 'var2', ...),
names_to='col1_name',
values_to='col2_name')
Pivot wider
เป็น function ใน tidyr package ที่จะเปลี่ยน dataframe จาก long format เป็น wider format
library(tidyr)
df %>% pivot_wider(names_from = var1, values_from = var2)




