在数据分析的过程中,数据的前处理是非常重要的。数据中出现“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值

  1. 利用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
  1. 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
Logo

新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐