Import và Export dữ liệu từ Excel vào R

Tác giả: Nguyễn Hải Trường | 2018-11-20

Để có thể thực hiện phân tích dữ liệu, trước tiên chúng ta cần phải có dữ liệu, mà dữ liệu có thể có từ nhiều nguồn khác nhau và được lưu trữ dưới các định dạng file khác nhau như .txt, .csv, .xlsx, hay database… Trong bài viết này, Ranalytics sẽ hướng dẫn các bạn cách import và export dữ liệu từ file Excel vào R.

Excel to R

Để import file Excel vào R, chúng ta có thể sử dụng package readxl.

library(readxl)
library(dplyr)

Giả sử, chúng ta đang có 1 file Excel datasets.xlsx có sẵn trong thư mục package readxl trong đường dẫn sau:

path <- readxl_example("datasets.xlsx")
path
## [1] "E:/Rlibrary/readxl/extdata/datasets.xlsx"


File Excel datasets.xlsx có 4 sheets: iris, mtcars, chickwts, quakes.

Bây giờ để import dữ liệu iris (sheet đầu tiên trong file Excel này) vào R, chúng ta sẽ sử dụng hàm read_excel() với câu lệnh như sau:

iris <- read_excel(path, # đường dẫn
                   sheet = 1 # số thứ tự sheet
                   )

iris %>% 
  as.data.frame %>% 
  head
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

Tương tự như vậy, nếu chúng ta muốn import dữ liệu mtcars (sheet thứ 2 trong file Excel) vào R, chúng ta chỉ cần chọn option sheet = 2.

mtcars <- read_excel(path, # đường dẫn
                     sheet = 2 # số thứ tự sheet
                     )

mtcars %>% 
  as.data.frame %>% 
  head
##    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## 1 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## 2 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## 3 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## 4 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## 5 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## 6 18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

Như vậy, để import dữ liệu của tất cả các sheet trong file Excel vào R, chúng ta có thể import từng sheet trong file Excel đó vào R bằng việc sử dụng câu lệnh ở trên. Tuy nhiên, việc làm “manual” đó chỉ thích hợp với trường hợp file Excel chỉ gồm 1 vài sheet, còn đối với những trường hợp file Excel bao gồm cả hàng chục hoặc hàng trăm sheet thì chúng ta cần một giải pháp khác thông minh hơn để xử lý vấn đề trên.

Để giải quyết vấn đề trên, chúng ta có thể dùng cách sau:

library(openxlsx) # package cần dùng
wb_obj <- loadWorkbook(path) # thống kê những sheets có trong file excel
sheet_names <- sheets(wb_obj) # tên của các sheets
for (i in 1:length(sheet_names)) {
  
  # Đối với lần lượt từng sheet trong file excel, câu lệnh sẽ import thành 1 data frame trong R với tên tương ứng theo từng sheet
  assign(sheet_names[i], readWorkbook(wb_obj, sheet = i))
  
}


Kết quả: Tất cả các sheet trong file Excel sẽ được import vào R thành các data frame tương ứng (trong Global Environment).

R to Excel

Như vậy, chúng ta đã biết làm thế nào để import dữ liệu từ file Excel vào R. Câu hỏi đặt ra lúc này là: Vậy làm thế nào để export dữ liệu từ R ra file Excel?

Câu trả lời là: Dùng hàm write.xlsx() trong package xlsx.

library(xlsx)
write.xlsx(iris, # tên data 
           file = paste0(getwd(),"/","iris_data.xlsx"), # đường dẫn
           row.names = F
           )

Tuy nhiên, với cách sử dụng xlsx, máy tính đòi hỏi phải cài đặt Java. Do đó, hiện này có một cách thuận tiện hơn, đó là sử dụng package writexl

library(writexl)
writexl::write_xlsx(iris, path = "./iris_data.xlsx")

Kết quả: Dữ liệu iris đã được export từ R sang Excel (file iris_data.xlsx).

Như vậy, chúng ta đã vừa được học cách import và export dữ liệu từ Excel vào R. Chúc các bạn học tập và làm việc hiệu quả với Ranalytics.vn!

comments powered by Disqus