dxy logo
首页丁香园病例库全部版块
搜索
登录

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

发布于 2024-11-17 · 浏览 258 · IP 宁夏宁夏
icon墨点星沟 +5丁当

一、方法介绍

今天给大家带来脚本是缺失值处理的。为什么说这一块呢?因为我经常看到大家在用excel对缺失值进行插补,这种也是一个很好的方法,但是比较耗费时间,换句话来说性价比极低。有没有好办法呢,答案是肯定有!!

python的Numpy库中pd.fillna函数就可以搞定,语言非常简洁、方便!看到这里你是不是突然紧张一下,这一期不会是上python教程吧。哈哈哈,我个人不是特别喜欢python的语法,所以也只是在上机器学习中上python(因为python跑的更快一些),所以这一期咱们还是用R。说到缺失值,不得不提缺失值的类型,随机缺失(MAR,Missing at Random)、完全随机缺失(MCAR,Missing Completely at Random)、非随机缺失(MNAR,Missing not at Random),因为每一种缺失类型对应着不同的填补方法,一般情况下缺失数据属于随机缺失、完全随机缺失,也只有这两种类型的据能够填补,至于自己数据属于哪一类网上很多教程,本文不再阐述啦。因为我赶着打酱油去。

img

在R语言中,据我所知好像没有包可以快速帮我们去填补一些缺失数据(当然一些基于算法的插补除外),因此对我们来说十分的不便利。基于此,我写了几个小脚本可供大家使用。

二、操作代码

1、删除法

删除法即个案的所有变量中只要存在缺失值,即将变量进行删除。这个比较简单,R里面有函数可以实现。代码如下

img

2、一次性平均数、中位数、众数插补

在R里面没有现成的包可以这样做,如果有麻烦告诉我一下谢谢!!所以这里我自己写了一套脚本,无偿给大家。

img
img

参数含义:

data: 传入的数据

id_junshu,id_zhongweishu,id_zhongshu:分别是要插补均数、中位数、众数所在的列(传入变量名或者变量所在的列号)

三、使用方法

运行以上所有代码:

1.我有一组数据,我想用均数插补第1,2列,中位数插补第4,5,众数插补第8,9列,那么应该这样写:

img

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列,那么应该这样写:

img

data=m_impute(data,id_junshu=1,id_zhongweishu=c(4,5),id_zhongshu=c(8,9))

3.我有一组数据,我想用均数插补第1,2,3列,那么应该这样写:

img

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

img

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

img

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

回复收藏8

全部讨论0

默认最新
avatar
分享帖子
share-weibo分享到微博
share-weibo分享到微信
认证
返回顶部