R语言实战笔记–第十五章 处理缺失数据
标签(空格分隔): R语言 处理缺失数据 VIM mice
缺失值(NA),是导致我们计算错误的一大来源,处理缺失数据在实际的应用中有着较为重要的作用。
基本方法
使用函数中内置的缺失值处理参数:在一般的计算函数如sum中,就包括了na.rm=T/F来控制是否忽略缺失值,默认不忽略,计算结果为NA,若忽略,则返回排除缺失值之后的计算结果。
使用na.omiit()函数处理:na.omit()函数可以把含有缺失值(NA)的向量的元素、矩阵和数据框的行删除。对向量和矩阵,删除后返回一个omit对象,并且显示删除了元素的下标或矩阵的行号,返回对象名称;对数据框,则直接返回去除缺失所在行之后的数据框对象。具体可使用example(na.omit)查看。
高级方法
完整的处理步骤包含:
1、识别缺失数据;
2、检查导致缺失数据的原因;
3、删除含缺失值的实例或用合理的值代替(插补)缺失值。
很明显的是,识别缺失数据是可以由机器完成的,但是,缺失数据原因的检查,以及选择删除还是使用某种合理值代替缺失数据均需要人工来选择,需要对数据的收集过程有所理解才能知道数据缺失原因,知道数据的含义及实际作用才能理解使用什么样的值才合理(可靠、准确)。
识别缺失值
缺失值(NA)、不可能值(NaN)以及无穷值(-Inf,Inf)的识别方法分别是is.na(),is.nan()和is.infinite(),每个返回结果均为TRUE/FALSE,它会识别每一个元素并返回结果,再使用sum()函数及mean()函数来求得缺失值的数量以及缺失比例。
另外,使用complete.cases()函数可得到数据框中不含缺失值(NA)及不可能值(NaN)的行,!complete.cases()则相反。注意,它并不能识别无穷值!
探索缺失值模式
缺失值的识别不仅仅是知道哪里有缺失,也在于怎么样的缺失(即缺失模式),这样才更有较的帮助我们进行下一步(寻找缺失原因)。方法有如下几种,列表样式、图形样式以及相关性样式:
列表
利用mice包中的md.pattern()函数,可得到一个信息列表,它的第一列是符合右边样式的行数,最后一列表示缺失值个数,中间的列是dataframe的原有列(顺序会改变,由缺失数量由小到大排列),它的下面使用1表示非缺失值,0表示缺失值,如下图,图中第二行表示数据框中,仅Span变量有缺失的行有2行,缺失数为1个。