Tác giả: Nguyễn Hải Trường | 2019-06-20
Trong quá trình phân tích dữ liệu, chúng ta sẽ rất hay gặp phải vấn đề dữ liệu bị thiếu do không có dữ liệu. Những giá trị bị thiếu này trong R
sẽ hiển thị là NA
.
Trong bài viết này, Ranalytics
sẽ hướng dẫn các bạn cách loại bỏ dòng hoặc cột chứa giá trị NA
trong R
.
Ta sử dụng dữ liệu giả lập sau đây:
data1 <- data.frame(
customer = c("Hai", "Phong", "Hiep", "Hoa"),
age = c(20,26,30,NA),
income_mil_VND = c(15,8,NA,20),
province = c(NA,NA,NA,NA),
gender = c("Male", "Male", "Male", "Female")
)
data1
## customer age income_mil_VND province gender
## 1 Hai 20 15 NA Male
## 2 Phong 26 8 NA Male
## 3 Hiep 30 NA NA Male
## 4 Hoa NA 20 NA Female
Dữ liệu bao gồm thông tin về tuổi, thu nhập bình quân 1 tháng và tỉnh/TP sinh sống của 4 khách hàng sử dụng thẻ tín dụng.
Xóa dòng chứa NA
drop_na
Hàm drop_na()
trong package tidyr
giúp chúng ta loại bỏ dòng có giá trị NA
ở 1 hoặc nhiều cột xác định nào đó.
library(dplyr)
library(tidyr)
data1 %>%
# Loại bỏ dòng có giá trị `NA` ở cột `income_mil_VND`
drop_na(income_mil_VND)
## customer age income_mil_VND province gender
## 1 Hai 20 15 NA Male
## 2 Phong 26 8 NA Male
## 4 Hoa NA 20 NA Female
Một cách khác tương tự, chúng ta có thể sử dụng filter(!is.na())
data1 %>%
# chỉ lấy những quan sát ko bị `NA` ở trường income_mil_VND
filter(!is.na(income_mil_VND))
## customer age income_mil_VND province gender
## 1 Hai 20 15 NA Male
## 2 Phong 26 8 NA Male
## 3 Hoa NA 20 NA Female
Vừa rồi, chúng ta đã vừa loại bỏ đi khách hàng tên Hiep
vì không có thông tin về thu nhập.
na.omit
na_omit()
giúp chúng ta loại bỏ các dòng mà có giá trị NA
ở bất kỳ cột nào trong dữ liệu.
Giả sử chúng ta có data2
là data1
bỏ đi cột province.
data2 <- data1 %>%
select(-province)
data2
## customer age income_mil_VND gender
## 1 Hai 20 15 Male
## 2 Phong 26 8 Male
## 3 Hiep 30 NA Male
## 4 Hoa NA 20 Female
Sử dụng na.omit()
với data2
sẽ giúp chúng ta loại bỏ đi những khách hàng mà ko có một trong những thông tin về tuổi, thu nhập, tỉnh/TP sinh sống.
data2 %>%
na.omit()
## customer age income_mil_VND gender
## 1 Hai 20 15 Male
## 2 Phong 26 8 Male
Xóa cột chứa NA
Để xóa tất cả các cột mà tất cả các giá trị trong cột đều là NA
chúng ta có thể dùng câu lệnh sau:
data1[colSums(!is.na(data1)) > 0]
## customer age income_mil_VND gender
## 1 Hai 20 15 Male
## 2 Phong 26 8 Male
## 3 Hiep 30 NA Male
## 4 Hoa NA 20 Female
Để xóa tất cả những cột mà có ít nhất một giá trị NA
chúng ta có thể dùng câu lệnh sau:
data1[colSums(is.na(data1)) == 0]
## customer gender
## 1 Hai Male
## 2 Phong Male
## 3 Hiep Male
## 4 Hoa Female
Như vậy, chúng ta đã vừa được học cách loại bỏ dòng hoặc cột chứa giá trị missing trong R
. Chúc các bạn học tập và làm việc hiệu quả với Ranalytics.vn
!