การนำเข้าข้อมูล(import data)

เพื่อให้การทำงานง่านและสะดวกขึ้น จำเป็นต้องทำติดตั้งหรือ setup folder ที่เราต้องการให้โปรแกรมอาร์ ดึงข้อมูล หรือ เซฟข้อมูลใน folder ที่กำหนด ถ้าต้องการทราบว่า ภาษาอาร์ทำงานอยู่ที่ folder .ให้ใช้คำสั่ง getwd( )

getwd()
## [1] "/Users/somsak_mac2/Documents/thaiXelatex/Statistics with R"

ถ้าต้องการเปลี่ยน folder ที่ใช้อยู่ก็สามารถทำได้โดยใช้ คำสั่ง setwd(X) โดย X เป็นเส้นทางของ folder ที่ต้องการ เช่น

# กำหนด folder ทีีต้องการเป็นตัวแปร X ก่อน
X<-"/Users/somsak_mac2/Documents/thaiXelatex"
# เปลียนแปลงการจัดเก็บยัง folder ที่ต้องการ
setwd(X)
# ตรวจสอบผล
getwd()
## [1] "/Users/somsak_mac2/Documents/thaiXelatex"
# หรือจะกำหนดไปเลย โดยไม่ต้องสร้างตัวแปรก่อนก็ได้
setwd("/Users/somsak_mac2/Documents/thaiXelatex/Statistics with R")

การเก็บตัวแปรกรอบข้อมูลด้วยไฟล์นามสกุล csv

ที่พูดถึงการเก็บตัวแปรกรอบข้อมูลก่อน การอ่านไฟล์นามสกุล csv ก็เพราะต้องการให้ผู้อ่านไปหาข้อมูลมาเองแล้วสร้างไฟล์ csv ขึ้นมา แต่จะให้ใช้ข้อมูลที่มีอยู่แล้วในภาษาอาร์ก่อนเพื่อความสะดวก ตัวแปรกรอบข้อมูลมีชื่อว่า mtcars โดยมีค่าสังเกตุอยู่ 32 ชุดที่มีจำนวนตัวแปร 11 ตัว

str(mtcars)
## 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
write.csv(mtcars,
          file = "/Users/somsak_mac2/Documents/thaiXelatex/Statistics with R/mtcars.csv")

write.csv(mtcars , file = “/Users/somsak_mac2/Documents/thaiXelatex/Statistics with R/mtcars.csv”)

เป็นคำสั่งสำหรับการ save กรอบข้อมูล ข้อความที่อยู่ในวงเล็บ mtcars คือตัวแปรกรอบข้อมูลที่ต้องการจะเก็บ file = และข้อความที่อยู่ภายในเครื่องหมาย " " คือเส้นทางและ folder และชื่อไฟล์นามสกุล csv ที่ต้องการเก็บนั้นเอง เอง

การอ่านไฟล์นามสกุล .csv

ไฟล์นามสกุลนี้ สามารถอ่านได้ไม่จำเป็นต้องดึงชุดคำสั่งอื่น(package)มาใช้งาน โดยใช้คำสั่ง read.csv

car<- read.csv(file="/Users/somsak_mac2/Documents/thaiXelatex/Statistics with R/mtcars.csv")
str(car)
## 'data.frame':    32 obs. of  12 variables:
##  $ X   : chr  "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : int  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : int  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : int  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : int  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: int  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: int  4 4 1 1 2 1 4 2 2 4 ...

ข้อสังเกตุกรอบข้อมูล mtcars นั้นไม่มีตัวแปร X ปรากฎอยู่เพราะกลายเป็น จริงๆแล้วในภาษาอาร์นอกจะตั้งชื้อตัวแปรให้สดมภ์ได้แล้ว ยังสามารถตั้งชื่อให้แถวแต่ละแถวได้ด้วยโดยใช้คำสั่ง rownames

ถ้าแถวที่ 1 ไม่ได้ตั้งชื่อให้สดมภ์ใด ในสดมภ์นั้นภาษาอาร์จะตั้งชื่อให้อัตโนมัติ ถ้าต้องการตั้งชื่อให้กับตัวแปร X ใหม่เป็น car.model สามารถทำได้ดังนี้

colnames(car)[1]<-"car.model"
str(car)
## 'data.frame':    32 obs. of  12 variables:
##  $ car.model: chr  "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...
##  $ mpg      : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl      : int  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp     : num  160 160 108 258 360 ...
##  $ hp       : int  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat     : num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt       : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec     : num  16.5 17 18.6 19.4 17 ...
##  $ vs       : int  0 0 1 1 0 1 0 1 1 1 ...
##  $ am       : int  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear     : int  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb     : int  4 4 1 1 2 1 4 2 2 4 ...

ที่สั่งเช่นนี้เนื่องจากตัวแปร X อยู่ในลำดับที่ 1 ในกรณีที่ไม่ต้องการเก็บค่าชื่อในแถวลงไปด้วยก็สามารถทำได้ ด้วยเขียนคำสั่งเพิ่มลงไปดังนี้

write.csv(mtcars,
          file = "/Users/somsak_mac2/Documents/thaiXelatex/Statistics with R/mtcars.csv", 
          row.names =FALSE)

โดยจะได้ผลดังนี้

car<- read.csv(file="/Users/somsak_mac2/Documents/thaiXelatex/Statistics with R/mtcars.csv")
str(car)
## 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : int  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : int  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : int  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : int  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: int  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: int  4 4 1 1 2 1 4 2 2 4 ...

จะเห็นได้ชื่อของแต่ละแถวไม่ได้ถูกรวมอยู่ด้วยเป็นตัวแปร \(X\)

การเข้านำกรอบข้อมูลจากไฟล์ excel นามสกุล xls หรือ xlsx

ในกรณีที่ง่ายที่สุด ก็คือจัดเก็บข้อมูลให้อยู่ในไฟล์ csv ก่อน ก็ไม่จำเป็นต้องเรียนรู้คำสั่งการไฟล์ xls หรือ xlsx แต่โดยปกติทั่วไปผู้อ่านน่าจะมีความคุ้นเคยก็กับไฟล์ xls (MS office 97-2003) หรือ xlsx (MS office 2007 ขึ้นไป)มากกว่า การนำกรอบข้อมูลไฟล์ xls กับ xlsx เข้ามาใช้งานในภาษาอาร์ แนะนำให้ใช้ชุด คำสั่งสำหรับการอ่านไฟล์ xls และ xlsx จากชุดคำสั่ง readlx หรือจะเรียกใช้จากชุดคำสั่ง tidyverse ก็ได้ สำหรับการเรียกใช้ชุดคำสั่งจำเป็น เชื่อมต่อกับอินเตอร์เน๊ตก่อนเพื่อดึงชุดคำสั่งมาเก็บไว้ในเครื่องก่อน แล้วจึงเรียกขึ้นมาใช้งานภายหลัง โดยใช้ คำสั่ง install.package(c(“package1”,“package2”,“package3”,…)) package1 หรือ package2 … คือชื่อของชุดคำสั่งที่เราต้องการนำมาเก็บไว้ในเครื่อง ในตัวอย่างนี้ คือ readxlอย่างนี้ คือ readxl

# install.packages("readxl")

ถ้าต้องการดึงชุดพคำสั่งมาใช้เพียงชุดคำสั่งเดียว ก็ไม่จำเป็นต้อง ใช้ c(“readxl”) ก็ได้ สำหรับการเรียกใช้งานก็ใช้คำสั่ง library(ชื่อชุดคำสั่งที่ต้องการเรียกใช้ )

library(readxl)

ในชุดคำสั่ง readxl มีตัวอย่างไฟล์ xls และ xlsx ให้ดึงขึ้นมาใช้ ถ้าต้องการทราบว่าตัวอย่างอะไรบ้างให้ใช้คำสั่ง

readxl_example()
##  [1] "clippy.xls"    "clippy.xlsx"   "datasets.xls"  "datasets.xlsx"
##  [5] "deaths.xls"    "deaths.xlsx"   "geometry.xls"  "geometry.xlsx"
##  [9] "type-me.xls"   "type-me.xlsx"

ถ้าต้องการทราบไฟล์ตัวอย่าง datasets.xls ที่ให้มาถูกเก็บไว้ที่ไหนในเครื่องคอมพิวเตอร์ของเรา ให้ใช้คำสั่งเดิม แต่เพิ่มชื่อไฟล์ที่ต้องการเข้าไป ดังนี้

readxl_example("datasets.xls")
## [1] "/Library/Frameworks/R.framework/Versions/4.1/Resources/library/readxl/extdata/datasets.xls"

ก็จะทราบว่าไฟล์เก็บไว้ที่folder ใด เนื่องจากไฟล์ datasets.xls อาจประกอบได้ไปด้วยกรอบข้อมูลหลายชีพ(sheet)ก็ได้ดังนี้ จึงควรเช็คก่อนว่าต้องใช้งานจากชีพใดยโดยใช้คำสั่ง

excel_sheets(readxl_example("datasets.xlsx"))
## [1] "iris"     "mtcars"   "chickwts" "quakes"

ถ้าต้องการเรียกใช้งานกรอบข้อมูลจากชีพ mtcars ตั้งชื่อกรอบข้อมูลนี้ว่า car ก็สามารถใช้คำสั่ง read_excel() อ่านไฟล์ datasets.xls และ datasets.xlsx ได้

car<-read_excel(path = readxl_example("datasets.xls"),sheet= "mtcars")

สำหรับการบันทึกกรอบข้อมูลเป็นไฟล์ xlsx xlsx นั้นจำเป็นต้องเรียกใช้ชุดคำสั่ง writelx หรือ ขึ้นมาก่อนlsx ขึ้นมาก่อน

library(writexl)

จากกรอบข้อมูล car สามารถบันทึกเป็น mtcars.xlsx ได้โดยใช้คำสั่ง

write_xlsx(car,
path = "/Users/somsak_mac2/Documents/thaiXelatex/Statistics with R/mtcars.xlsx")

การอ่านและบันทุกไฟล์ rds และ RData

ในกรณี ที่ไม่ต้องการนำกรอบข้อมูล หรือตัวแปรใดๆ ที่สร้างขึ้นไว้ไปใช้งานกับโปรแกรมอื่นๆ การบันทึกตัวแปร กรอบข้อมูล จะถูกบันทึกอยู่ไฟล์นามสกุล rds โดยไม่จำเป็นต้องเรียกชุดคำสั่งใดๆ เพิ่มเติม เช่น

A_Z =LETTERS[1:26]
saveRDS(A_Z, file = "data.rds")
saveRDS(car,file = "/Users/somsak_mac2/Documents/thaiXelatex/Statistics with R/mtcars.rds")

ส่วนเรียกใช้งานก็ก็ทำได้โดยใช้คำสั่ง

readRDS(A_Z, file = "data.rds")
##  [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
## [20] "T" "U" "V" "W" "X" "Y" "Z"
readRDS(car,file = "/Users/somsak_mac2/Documents/thaiXelatex/Statistics with R/mtcars.rds")
## # A tibble: 32 x 11
##      mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
##    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1  21       6  160    110  3.9   2.62  16.5     0     1     4     4
##  2  21       6  160    110  3.9   2.88  17.0     0     1     4     4
##  3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
##  4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
##  5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
##  6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
##  7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
##  8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2
##  9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
## 10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
## # … with 22 more rows

ในกรณีที่ต้องบันทึกข้อมูล ตัวแปร หรือกรอบข้อมูลพร้อมๆ หลายตัวแปร ก็จะถูกบรรทึกในไฟล์นามสกุล RData เพียงไฟล์เดียวสามารถทำได้โดยใช้คำสั่ง

save(A_Z,car,file="/Users/somsak_mac2/Documents/thaiXelatex/Statistics with R/mtcars.RData")

การเรียกใช้งานก็ทำในทำนองเดียวกันโดยใช้คำสั่ง

load(file= "/Users/somsak_mac2/Documents/thaiXelatex/Statistics with R/mtcars.Rdata")

การนำเข้ามูลโดยการใช้ Rstudio

สำหรับผู้หัดใช้โปรแกรมอาร์ อาจจะะยังไม่เชื่อชาญการนำเข้ามูลโดยการพิมพ์คำสั่ง โปรแกรม Rstudio ได้ออกแบบ GUI เพื่อช่วยให้ผู้ใช้อาร์นำเข้าข้อมูลชนิดต่างๆ ได้ง่ายขึ้น ดังนี้

Step1

จากรูปจะเห็นได้ว่า สามารถอ่านไฟล์ได้หลายชนิด แต่ในเนื้อหานี้ จะแนะนำให้อ่านไฟล์ csv หรือ xlsx เพราะเป็นข้อมูลมาตรฐานที่ผู้อ่านคุ้นเคยเป็นอย่างดี สำหรับไฟล์ที่มาจากโปรแกรม SPSS หรือ stata หรือ SAS จะไม่พูดถึง

กรณี นำเข้าข้อมูลไฟล์ชนิด csvให้เลือกที่ From Text (readr)…

Step2

เลือกไฟล์ csv ที่ต้องการ และสามารถ copy code ไปใช้งานได้ เมื่อตรวจสอบเรียบร้อย ก็กด Import เมื่อนำไปใช้งานต่อไป

Step3

เมื่อกด Import แล้ว กรอบข้อมูลก็จะเรียกไปใช้งานได้ (หมายเหตุ จอหน้าและสีสันพื้นหลังร่วมถึงขนาดและชนิดของตัวอักษร สามารถเลือกใช้งานได้ ที่ global option สำหรับ WINDOWS และ Preference สำหรับ OSX ) หน้าต่าง option ในกรณี ไฟล์ xlsx ก็จะเหมือนกับไฟล์ชนิด csv แต่ให้เลือกที่ From Excel…

สำหรับไฟล์นามสกุล rds และ RData สามารถนำเข้าข้อมูลจาก RStudio โดยเลือกไปที่ เมนู file และเลือก Open File… แล้วเลือกไปยัง Folder ของไฟล์ rds หรือ Rdata ต้องการได้เลย การนำเข้าข้อมูลชนิด rds และ RData ด้วยโปรแกรม RStudio

## บทอื่นๆ