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
!