R - Tệp CSV

Trong R, chúng ta có thể đọc dữ liệu từ các tệp được lưu trữ bên ngoài môi trường R. Chúng tôi cũng có thể ghi dữ liệu vào các tệp sẽ được lưu trữ và truy cập bởi hệ điều hành. R có thể đọc và ghi thành nhiều định dạng tệp khác nhau như csv, excel, xml, v.v.

Trong chương này, chúng ta sẽ học cách đọc dữ liệu từ tệp csv và sau đó ghi dữ liệu vào tệp csv. Tệp phải có trong thư mục làm việc hiện tại để R có thể đọc nó. Tất nhiên chúng ta cũng có thể thiết lập thư mục của riêng mình và đọc các tệp từ đó.

Nhận và thiết lập thư mục làm việc

Bạn có thể kiểm tra thư mục nào mà không gian làm việc R đang trỏ đến bằng cách sử dụng getwd()chức năng. Bạn cũng có thể đặt một thư mục làm việc mới bằng cách sử dụngsetwd()chức năng.

# Get and print current working directory.
print(getwd())

# Set current working directory.
setwd("/web/com")

# Get and print current working directory.
print(getwd())

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

[1] "/web/com/1441086124_2016"
[1] "/web/com"

Kết quả này phụ thuộc vào hệ điều hành của bạn và thư mục hiện tại nơi bạn đang làm việc.

Nhập dưới dạng tệp CSV

Tệp csv là một tệp văn bản trong đó các giá trị trong các cột được phân tách bằng dấu phẩy. Hãy xem xét dữ liệu sau có trong tệp có têninput.csv.

Bạn có thể tạo tệp này bằng Windows notepad bằng cách sao chép và dán dữ liệu này. Lưu tệp dưới dạnginput.csv bằng cách sử dụng tùy chọn lưu dưới dạng tất cả tệp (*. *) trong notepad.

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

Đọc tệp CSV

Sau đây là một ví dụ đơn giản về read.csv() chức năng đọc tệp CSV có sẵn trong thư mục làm việc hiện tại của bạn -

data <- read.csv("input.csv")
print(data)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

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

Phân tích tệp CSV

Theo mặc định, read.csv()hàm cung cấp đầu ra dưới dạng khung dữ liệu. Có thể dễ dàng kiểm tra điều này như sau. Ngoài ra, chúng ta có thể kiểm tra số lượng cột và hàng.

data <- read.csv("input.csv")

print(is.data.frame(data))
print(ncol(data))
print(nrow(data))

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

[1] TRUE
[1] 5
[1] 8

Khi chúng tôi đọc dữ liệu trong khung dữ liệu, chúng tôi có thể áp dụng tất cả các chức năng áp dụng cho khung dữ liệu như được giải thích trong phần tiếp theo.

Nhận mức lương tối đa

# Create a data frame.
data <- read.csv("input.csv")

# Get the max salary from data frame.
sal <- max(data$salary)
print(sal)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

[1] 843.25

Nhận thông tin chi tiết về người có mức lương tối đa

Chúng ta có thể tìm nạp các hàng đáp ứng các tiêu chí bộ lọc cụ thể tương tự như mệnh đề where trong 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)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

id    name  salary  start_date    dept
5     NA    Gary  843.25  2015-03-27    Finance

Nhận tất cả những người làm việc trong bộ phận CNTT

# Create a data frame.
data <- read.csv("input.csv")

retval <- subset( data, dept == "IT")
print(retval)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

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

Nhận những người trong bộ phận CNTT có mức lương lớn hơn 600

# Create a data frame.
data <- read.csv("input.csv")

info <- subset(data, salary > 600 & dept == "IT")
print(info)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

id   name      salary   start_date   dept
1      1    Rick      623.3    2012-01-01   IT
3      3    Michelle  611.0    2014-11-15   IT

Thu hút những người đã tham gia vào hoặc sau năm 2014

# Create a data frame.
data <- read.csv("input.csv")

retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))
print(retval)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

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

Ghi vào tệp CSV

R có thể tạo tệp csv dạng khung dữ liệu hiện có. Cácwrite.csv()được sử dụng để tạo tệp csv. Tệp này được tạo trong thư mục làm việc.

# 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)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

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

Ở đây, cột X đến từ tập dữ liệu mới hơn. Điều này có thể được loại bỏ bằng cách sử dụng các tham số bổ sung trong khi ghi tệp.

# 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)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

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