เพื่อให้การทำงานง่านและสะดวกขึ้น จำเป็นต้องทำติดตั้งหรือ 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 ขึ้นมา แต่จะให้ใช้ข้อมูลที่มีอยู่แล้วในภาษาอาร์ก่อนเพื่อความสะดวก ตัวแปรกรอบข้อมูลมีชื่อว่า 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 ที่ต้องการเก็บนั้นเอง เอง
ไฟล์นามสกุลนี้ สามารถอ่านได้ไม่จำเป็นต้องดึงชุดคำสั่งอื่น(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\)
ในกรณีที่ง่ายที่สุด ก็คือจัดเก็บข้อมูลให้อยู่ในไฟล์ 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 โดยไม่จำเป็นต้องเรียกชุดคำสั่งใดๆ เพิ่มเติม เช่น
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 ได้ออกแบบ GUI เพื่อช่วยให้ผู้ใช้อาร์นำเข้าข้อมูลชนิดต่างๆ ได้ง่ายขึ้น ดังนี้
Step1
จากรูปจะเห็นได้ว่า สามารถอ่านไฟล์ได้หลายชนิด แต่ในเนื้อหานี้ จะแนะนำให้อ่านไฟล์ csv หรือ xlsx เพราะเป็นข้อมูลมาตรฐานที่ผู้อ่านคุ้นเคยเป็นอย่างดี สำหรับไฟล์ที่มาจากโปรแกรม SPSS หรือ stata หรือ SAS จะไม่พูดถึง
กรณี นำเข้าข้อมูลไฟล์ชนิด csvให้เลือกที่ From Text (readr)…
Step2
เลือกไฟล์ csv ที่ต้องการ และสามารถ copy code ไปใช้งานได้ เมื่อตรวจสอบเรียบร้อย ก็กด Import เมื่อนำไปใช้งานต่อไป
Step3
เมื่อกด Import แล้ว กรอบข้อมูลก็จะเรียกไปใช้งานได้ (หมายเหตุ จอหน้าและสีสันพื้นหลังร่วมถึงขนาดและชนิดของตัวอักษร สามารถเลือกใช้งานได้ ที่ global option สำหรับ WINDOWS และ Preference สำหรับ OSX ) ในกรณี ไฟล์ xlsx ก็จะเหมือนกับไฟล์ชนิด csv แต่ให้เลือกที่ From Excel…
สำหรับไฟล์นามสกุล rds และ RData สามารถนำเข้าข้อมูลจาก RStudio โดยเลือกไปที่ เมนู file และเลือก Open File… แล้วเลือกไปยัง Folder ของไฟล์ rds หรือ Rdata ต้องการได้เลย
## บทอื่นๆ