一定要先了解缺失机制,即为什么会产生缺失值。
对于随机产生的缺失值,可以删除,删除的对象分为两类,变量的删除,以及观测值的删除。当某一变量的缺失值比例很高的时候,可以直接删除,也可以用哑变量进行标志。
但缺失值的产生不是随机的,要根据它产生原因用不同的方法填补;
主要介绍三个包的常用于填补缺失值的函数。
思路一般是要定位缺失值以及查看缺失值的数量:
is.na()
sum(is.na())
md.pattern() mice包
computemissings包
填充:na.fill()
填充,是一个比较有意思的操作,你的原始数据有可能会有缺失值NA,在做各种计算时,就会出现有问题。一种方法是,你把NA值都去掉;另外一种方法是,你把NA值进行填充后再计算。那么在填充值时,就有一些讲究了。
把NA值进行填充。
# 生成数据框
> df<-data.frame(a=c(1,NA,NA,2,NA),
+ b=c('B','A','B','B',NA),
+ c=c(rnorm(2),NA,NA,NA));df
a b c
1 1 B 0.2670988
2 NA A -0.5425200
3 NA B NA
4 2 B NA
5 NA <NA> NA
# 把数据框a列的NA,用9进行填充
> na.fill(df$a,9)
[1] 1 9 9 2 9
# 把数据框中的NA,用1进行填充
&