省略或替換缺失值

重新編碼缺失值

通常,缺失的資料不會在資料集中編碼為 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.actionna.action 引數需要包含在函式呼叫中,例如:

 lm(y2 ~ y1, data = anscombe, na.action = 'na.exclude')