省略或替换缺失值
重新编码缺失值
通常,缺失的数据不会在数据集中编码为 NA
。例如,在 SPSS 中,缺失值通常由值 99
表示。
num.vec <- c(1, 2, 3, 99, 5)
num.vec
## [1] 1 2 3 99 5
可以使用子集直接分配 NA
num.vec[num.vec == 99] <- NA
但是,优选的方法是使用如下的 is.na<-
。帮助文件(?is.na
)指出:
is.na<-
可以提供更安全的方法来设置缺失。例如,它对因素的行为不同。
is.na(num.vec) <- num.vec == 99
两种方法都返回
num.vec
## [1] 1 2 3 NA 5
删除缺失值
可以通过多种方式从向量中删除缺少的值:
num.vec[!is.na(num.vec)]
num.vec[complete.cases(num.vec)]
na.omit(num.vec)
## [1] 1 2 3 5
从计算中排除缺失值
在具有缺失值的向量上使用算术函数时,将返回缺失值:
mean(num.vec) # returns: [1] NA
na.rm
参数告诉函数从计算中排除 NA
值:
mean(num.vec, na.rm = TRUE) # returns: [1] 2.75
# an alternative to using 'na.rm = TRUE':
mean(num.vec[!is.na(num.vec)]) # returns: [1] 2.75
一些 R 函数,如 lm
,有一个 na.action
参数。这个的默认值是 na.omit
,但是使用 options(na.action = 'na.exclude')
可以更改 R 的默认行为。
如果没有必要更改默认行为,但是对于特定情况需要另一个 na.action
,na.action
参数需要包含在函数调用中,例如:
lm(y2 ~ y1, data = anscombe, na.action = 'na.exclude')