R语言教程:缺失值处理脚本

一、方法介绍
今天给大家带来脚本是缺失值处理的。为什么说这一块呢?因为我经常看到大家在用excel对缺失值进行插补,这种也是一个很好的方法,但是比较耗费时间,换句话来说性价比极低。有没有好办法呢,答案是肯定有!!
python的Numpy库中pd.fillna函数就可以搞定,语言非常简洁、方便!看到这里你是不是突然紧张一下,这一期不会是上python教程吧。哈哈哈,我个人不是特别喜欢python的语法,所以也只是在上机器学习中上python(因为python跑的更快一些),所以这一期咱们还是用R。说到缺失值,不得不提缺失值的类型,随机缺失(MAR,Missing at Random)、完全随机缺失(MCAR,Missing Completely at Random)、非随机缺失(MNAR,Missing not at Random),因为每一种缺失类型对应着不同的填补方法,一般情况下缺失数据属于随机缺失、完全随机缺失,也只有这两种类型的据能够填补,至于自己数据属于哪一类网上很多教程,本文不再阐述啦。因为我赶着打酱油去。

在R语言中,据我所知好像没有包可以快速帮我们去填补一些缺失数据(当然一些基于算法的插补除外),因此对我们来说十分的不便利。基于此,我写了几个小脚本可供大家使用。
二、操作代码
1、删除法
删除法即个案的所有变量中只要存在缺失值,即将变量进行删除。这个比较简单,R里面有函数可以实现。代码如下

2、一次性平均数、中位数、众数插补
在R里面没有现成的包可以这样做,如果有麻烦告诉我一下谢谢!!所以这里我自己写了一套脚本,无偿给大家。


参数含义:
data: 传入的数据
id_junshu,id_zhongweishu,id_zhongshu:分别是要插补均数、中位数、众数所在的列(传入变量名或者变量所在的列号)
三、使用方法
运行以上所有代码:
1.我有一组数据,我想用均数插补第1,2列,中位数插补第4,5,众数插补第8,9列,那么应该这样写:

data=m_impute(data,id_junshu=c(1,2),id_zhongweishu=c(4,5),id_zhongshu=c(8,9))
2.我有一组数据,我想用均数插补第1列,中位数插补第4,5列,众数插补第8,9列,那么应该这样写:

data=m_impute(data,id_junshu=1,id_zhongweishu=c(4,5),id_zhongshu=c(8,9))
3.我有一组数据,我想用均数插补第1,2,3列,那么应该这样写:

#数字换成变量名也是可以的,大家大胆往里面传,如果错误的话我写了校对模块。

如果你不会R也没事,我写了可视化操作工具,使用方法参考下一篇

最后编辑于 2024-11-17 · 浏览 258