處理缺失值--完整實例分析(行刪除)
在完整實例分析中,只有每個變量都包含了有效數據值的觀測才會保留下來做進一步的分析。實際上,這樣會導致包含一個或多個缺失值的任意一行都會被刪除,因此常稱作行刪除法(listwise)、個案刪除(case-wise)或剔除。
函數complete.cases()可以用來存儲沒有缺失值的數據框或者矩陣形式的實例(行):
newdata <- mydata[complete.cases(mydata),]
同樣的結果可以用na.omit函數獲得:
newdata <- na.omit(mydata)
兩行代碼表示的意思都是:mydata中所有包含缺失數據的行都被刪除,然后結果才存儲到
newdata中。
現假設你對睡眠研究中變量間的關系很感興趣。計算相關系數前,使用行刪除法可刪除所有
含有缺失值的動物:
options(digits=1)
cor(na.omit(sleep))
結果分析:表中的相關系數僅通過所有變量均為完整數據的42種動物計算得來。(注意代碼cor(sleep, use="complete.obs")可生成同樣的結果。)
若想研究壽命和妊娠期對睡眠中做夢時長的影響,可應用行刪除法的線性回歸:
fit <- lm(Dream ~ Span + Gest, data=na.omit(sleep))
summary(fit)
結果分析:此處可以看到,動物妊娠期越短,做夢時長越長(控制壽命不變);而控制妊娠期不變時,壽命與做夢時長不相關。整個分析基於有完整數據的42個實例。