省略或替換缺失值
重新編碼缺失值
通常,缺失的資料不會在資料集中編碼為 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')