R - ไฟล์ CSV
ใน R เราสามารถอ่านข้อมูลจากไฟล์ที่เก็บไว้นอกสภาพแวดล้อม R นอกจากนี้เรายังสามารถเขียนข้อมูลลงในไฟล์ซึ่งจะถูกจัดเก็บและเข้าถึงโดยระบบปฏิบัติการ R สามารถอ่านและเขียนเป็นรูปแบบไฟล์ต่างๆเช่น csv, excel, xml เป็นต้น
ในบทนี้เราจะเรียนรู้การอ่านข้อมูลจากไฟล์ csv แล้วเขียนข้อมูลลงในไฟล์ csv ไฟล์ควรอยู่ในไดเร็กทอรีการทำงานปัจจุบันเพื่อให้ R สามารถอ่านได้ แน่นอนว่าเราสามารถตั้งไดเร็กทอรีของเราเองและอ่านไฟล์ได้จากที่นั่น
การรับและการตั้งค่าไดเร็กทอรีการทำงาน
คุณสามารถตรวจสอบไดเร็กทอรีที่เวิร์กสเปซ R ชี้ไปที่โดยใช้ getwd()ฟังก์ชัน คุณยังสามารถตั้งค่าไดเร็กทอรีการทำงานใหม่โดยใช้ไฟล์setwd()ฟังก์ชัน
# Get and print current working directory.
print(getwd())
# Set current working directory.
setwd("/web/com")
# Get and print current working directory.
print(getwd())
เมื่อเรารันโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
[1] "/web/com/1441086124_2016"
[1] "/web/com"
ผลลัพธ์นี้ขึ้นอยู่กับระบบปฏิบัติการและไดเร็กทอรีปัจจุบันของคุณที่คุณทำงานอยู่
ป้อนข้อมูลเป็นไฟล์ CSV
ไฟล์ csv เป็นไฟล์ข้อความที่ค่าในคอลัมน์ถูกคั่นด้วยเครื่องหมายจุลภาค ลองพิจารณาข้อมูลต่อไปนี้ที่มีอยู่ในไฟล์ชื่อinput.csv.
คุณสามารถสร้างไฟล์นี้โดยใช้ windows notepad โดยการคัดลอกและวางข้อมูลนี้ บันทึกไฟล์เป็นinput.csv โดยใช้ตัวเลือกบันทึกเป็นไฟล์ทั้งหมด (*. *) ในแผ่นจดบันทึก
id,name,salary,start_date,dept
1,Rick,623.3,2012-01-01,IT
2,Dan,515.2,2013-09-23,Operations
3,Michelle,611,2014-11-15,IT
4,Ryan,729,2014-05-11,HR
5,Gary,843.25,2015-03-27,Finance
6,Nina,578,2013-05-21,IT
7,Simon,632.8,2013-07-30,Operations
8,Guru,722.5,2014-06-17,Finance
การอ่านไฟล์ CSV
ต่อไปนี้เป็นตัวอย่างง่ายๆของ read.csv() ฟังก์ชันในการอ่านไฟล์ CSV ที่มีอยู่ในไดเร็กทอรีการทำงานปัจจุบันของคุณ -
data <- read.csv("input.csv")
print(data)
เมื่อเรารันโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
id, name, salary, start_date, dept
1 1 Rick 623.30 2012-01-01 IT
2 2 Dan 515.20 2013-09-23 Operations
3 3 Michelle 611.00 2014-11-15 IT
4 4 Ryan 729.00 2014-05-11 HR
5 NA Gary 843.25 2015-03-27 Finance
6 6 Nina 578.00 2013-05-21 IT
7 7 Simon 632.80 2013-07-30 Operations
8 8 Guru 722.50 2014-06-17 Finance
การวิเคราะห์ไฟล์ CSV
โดยค่าเริ่มต้น read.csv()ฟังก์ชันให้ผลลัพธ์เป็นกรอบข้อมูล สามารถตรวจสอบได้ง่ายๆดังนี้ นอกจากนี้เราสามารถตรวจสอบจำนวนคอลัมน์และแถว
data <- read.csv("input.csv")
print(is.data.frame(data))
print(ncol(data))
print(nrow(data))
เมื่อเรารันโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
[1] TRUE
[1] 5
[1] 8
เมื่อเราอ่านข้อมูลใน data frame เราสามารถใช้ฟังก์ชันทั้งหมดที่เกี่ยวข้องกับ data frames ได้ตามที่อธิบายไว้ในส่วนต่อไป
รับเงินเดือนสูงสุด
# Create a data frame.
data <- read.csv("input.csv")
# Get the max salary from data frame.
sal <- max(data$salary)
print(sal)
เมื่อเรารันโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
[1] 843.25
รับรายละเอียดของบุคคลที่มีเงินเดือนสูงสุด
เราสามารถดึงแถวที่ตรงตามเกณฑ์การกรองเฉพาะที่คล้ายกับ SQL โดยที่อนุประโยค
# Create a data frame.
data <- read.csv("input.csv")
# Get the max salary from data frame.
sal <- max(data$salary)
# Get the person detail having max salary.
retval <- subset(data, salary == max(salary))
print(retval)
เมื่อเรารันโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
id name salary start_date dept
5 NA Gary 843.25 2015-03-27 Finance
รับคนทั้งหมดที่ทำงานในแผนกไอที
# Create a data frame.
data <- read.csv("input.csv")
retval <- subset( data, dept == "IT")
print(retval)
เมื่อเรารันโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
id name salary start_date dept
1 1 Rick 623.3 2012-01-01 IT
3 3 Michelle 611.0 2014-11-15 IT
6 6 Nina 578.0 2013-05-21 IT
รับบุคคลในแผนกไอทีที่มีเงินเดือนมากกว่า 600
# Create a data frame.
data <- read.csv("input.csv")
info <- subset(data, salary > 600 & dept == "IT")
print(info)
เมื่อเรารันโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
id name salary start_date dept
1 1 Rick 623.3 2012-01-01 IT
3 3 Michelle 611.0 2014-11-15 IT
รับคนที่เข้าร่วมในหรือหลังปี 2014
# Create a data frame.
data <- read.csv("input.csv")
retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))
print(retval)
เมื่อเรารันโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
id name salary start_date dept
3 3 Michelle 611.00 2014-11-15 IT
4 4 Ryan 729.00 2014-05-11 HR
5 NA Gary 843.25 2015-03-27 Finance
8 8 Guru 722.50 2014-06-17 Finance
การเขียนลงในไฟล์ CSV
R สามารถสร้างไฟล์ csv จากเฟรมข้อมูลที่มีอยู่ write.csv()ฟังก์ชันถูกใช้เพื่อสร้างไฟล์ csv ไฟล์นี้ถูกสร้างขึ้นในไดเร็กทอรีการทำงาน
# Create a data frame.
data <- read.csv("input.csv")
retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))
# Write filtered data into a new file.
write.csv(retval,"output.csv")
newdata <- read.csv("output.csv")
print(newdata)
เมื่อเรารันโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
X id name salary start_date dept
1 3 3 Michelle 611.00 2014-11-15 IT
2 4 4 Ryan 729.00 2014-05-11 HR
3 5 NA Gary 843.25 2015-03-27 Finance
4 8 8 Guru 722.50 2014-06-17 Finance
คอลัมน์ X มาจากชุดข้อมูลที่ใหม่กว่า สิ่งนี้สามารถทิ้งได้โดยใช้พารามิเตอร์เพิ่มเติมขณะเขียนไฟล์
# Create a data frame.
data <- read.csv("input.csv")
retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))
# Write filtered data into a new file.
write.csv(retval,"output.csv", row.names = FALSE)
newdata <- read.csv("output.csv")
print(newdata)
เมื่อเรารันโค้ดด้านบนจะให้ผลลัพธ์ดังนี้ -
id name salary start_date dept
1 3 Michelle 611.00 2014-11-15 IT
2 4 Ryan 729.00 2014-05-11 HR
3 NA Gary 843.25 2015-03-27 Finance
4 8 Guru 722.50 2014-06-17 Finance