处理缺失值--完整实例分析(行删除)
在完整实例分析中,只有每个变量都包含了有效数据值的观测才会保留下来做进一步的分析。实际上,这样会导致包含一个或多个缺失值的任意一行都会被删除,因此常称作行删除法(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个实例。