R Cheat Sheet (5): Missing Values

在统计和数据分析中,丢失的值也具有重要的作用。不能简单地忽视这些丢失的值,而是要仔细分析,查找这些值丢失的原因,以及之它们之间所隐含的模式。

Contents

1. NA

在R中,用NA 来表示不可用(not available)或者丢失(missing)的值。任何涉及NA 的运算,结果都是NA ,例如:

> x <- c(44, NA, 5, NA)
> x * 3
[1] 132  NA  15  NA

可以使用is.na() 来判断值是否为NA :

> y <- rnorm(1000)
> z <- rep(NA, 1000)
> my_data <- sample(c(y, z), 100)
> my_na <- is.na(my_data)
> my_na
  [1] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [23]  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE
 [45]  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [67]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE
 [89] FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE

需要注意的是,使用==并不能判断值是否为NA :

> my_data == NA
  [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [46] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [91] NA NA NA NA NA NA NA NA NA NA

 NA 代表的是一个占位符,而非一个值, NA 参与逻辑运算,会导致逻辑表达式不完整,其结果也只能是 NA 。

R使用数字1表示TRUE,使用数字0表示FALSE,可以使用sum() 来计算前面my_data 中NA 的个数:

> sum(my_na)
[1] 47

2. NaN

NaN 是另一种丢失值,表示“非数字(not a number)”:

> 0 / 0
[1] NaN
> Inf - Inf
[1] NaN