在数据分析的过程中,数据的前处理是非常重要的。数据中出现“NA”是非常常见的,“NA”指“Not Available”,出现NA常常会影响我们进行数据分析,这是因为NA是会传染的。
NA值的影响
- 看以下例子:
> a <- c(1,2,3,4,5)
> mean(a)
[1] 3
如果出现NA,情况就不一样了
> a <- c(1,2,3,4,5,NA)
> mean(a)
[1] NA
由此可见,NA值会影响到我们进行统计分析,那么如何去除NA值或者在分析的过程中忽略NA值呢?
去除行NA值
- 利用complete.cases()函数
complete.cases()函数的效果如果该行或该列存在任何NA值,都会剔除该行或列,使用complete.cases()后效果如下:
> # 创建数据框
mydata <- data.frame(
name=c("M","T","J","H","F"),
sex=c("F","M",NA,"M","M"),
score=c(90,85,75,89,NA))
> mydata
name sex score
1 M F 90
2 T M 85
3 J <NA> 75
4 H M 89
5 F M NA
> mydata<-mydata[complete.cases(mydata),]
> mydata
name sex score
1 M F 90
2 T M 85
4 H M 89
- dplyr包
dplyr包filter()函数,也可实现筛选不包含缺失值的行
dplyr::filter(df, !is.na(columnname))
> dplyr::filter(mydata, !is.na(score))
name sex score
1 M F 90
2 T M 85
3 J <NA> 75
4 H M 89