专栏名称: 爬虫俱乐部
Stata技术控,编程技术咨询,数据讨论与分享,编程和实证培训。
目录
相关文章推荐
ZaomeDesign  ·  每日灵感丨二月二十三日 ·  14 小时前  
优秀网页设计  ·  AI工具丨拯救爆肝设计师!这款AI神器3分钟 ... ·  2 天前  
庞门正道  ·  这包装,密谋掏空你钱包! ·  2 天前  
庞门正道  ·  狗生艰难,主人坑狗太专业! ·  3 天前  
庞门正道  ·  结婚,不治百病。 ·  4 天前  
51好读  ›  专栏  ›  爬虫俱乐部

关于缺失值的二三事

爬虫俱乐部  · 公众号  ·  · 2018-07-23 14:16

正文

暑期Stata培训班报名倒计时咯!!!接力线上的网课培训,我们在今夏又开始新一轮的线下培训啦! 8月4日至12日 ,爬虫俱乐部期待与您的相遇!培训具体内容详见推文 《暑期Stata编程技术定制培训班》

有问题,不要怕!点击推文底部“ 阅读原文 ”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱 [email protected] ,我们会及时为您解答哟~

喜大普奔~爬虫俱乐部的 github 主站正式上线了!我们的网站地址是: https://stata-club.github.io ,粉丝们可以通过该网站访问过去的推文哟~

好消息 :爬虫俱乐部隆重推出数据定制及处理业务啦,您有任何网页数据获取及处理方面的难题,请发邮件至我们邮箱 [email protected] ,届时会有俱乐部资深高级会员为您排忧解难!

Hello各位亲故~今天为大家介绍几个 关于缺失值的小命令~ 在往期的推文中,我们为大家介绍过数据缺失值的查看和填充,详见 《朝花夕拾 | 如何查看数据缺失值?》 《carryforward——填充缺失值》 《如何补齐数据》 ,今天小编要向大家推荐的是nmissing命令和dropmiss命令的 进阶版 —— missings系列命令 ,以及简单的缺失值查看器—— mdesc命令

(一)missings——缺失值的好管家

missings命令可以用来查看和删除缺失值,缺失值可分为两类:一是 字符型缺失值 ,即空字符串(“”);二是 数值型缺失值 ,包括系统缺失值sysmiss (.)和26类扩展型缺失值(.a, .b, … ,.z),其中,Stata提供的26类扩展型缺失值可以记录各类缺失值的不同含义。

Ps.关于扩展类缺失值,小编的个人理解是,有些缺失值的产生具有特殊的原因,如果想要对此进行标记,就可以使用这种扩展类的缺失值,可以根据自己的需要使用。

常用命令搭配如下

1. missings report :报告指定变量的缺失值个数,若不指定变量则报告所有变量的缺失值个数。这一命令的用法与nmissing类似,具体语法如下:

missings report [varlist] [if] [in] [, common_options observations minimum(#) percent format(format) sort show(#)]

常用的选项如下:

① obs:不再按每一个变量的缺失值个数报告,而按每一行观测值的缺失值个数报告;

② p:不再报告变量的缺失值个数,而报告缺失值占总个数的比例报告;

③ format(format)必须与选项percent一起出现,指定percent的格式,默认值为format(%5.2f);

④ min(#):规定报告指定变量缺失值的最小个数,例如,min(5)规定只有当指定变量的缺失值不少于5个的时候才会被报告出来;

⑤ sort:按照变量列表中每个变量所包含的缺失值个数降序报告;

⑥ show(#)必须与选项sort一起使用,指定在排序的基础上报告变量的最多个数;

⑦ 通用选项common_options包括:

numeric (all subcommands):只考虑数值型缺失值。

string (all subcommands) :只考虑字符型缺失值。

sysmiss (all subcommands) :考虑数值型缺失值中系统类缺失值和字符型缺失值。

2. missings list :以列表形式报告指定变量出现缺失值的观测值所在行。

missings list [varlist] [if] [in] [, common_options minimum(#)]

3. missings table :将包含指定变量缺失值的观测值记为1,不包含则记为0,并以表格形式列出非缺失值和缺失值的个数。

missings table [varlist] [if] [in] [, common_options minimum(#)]

4. missings tag :生成一个计数变量,记录每一行中指定变量的缺失值个数。

missings tag [varlist] [if] [in], generate(newvar) [common_options]

其中, 选项 generate(newvar) 用来生成新变量,该选项必须使用

5. missings dropvars :如果指定变量的所有观测值都是缺失的,则删除该变量。

missings dropvars [varlist] [, common_options force]

其中, 选项 force 必须使用

6. missings dropobs :删除指定变量缺失的观测值。这一命令的用法与dropmiss类似。

missings dropobs [varlist] [if] [in] [, common_options force]

其中, 选项 force 必须使用

~举个例子吧~

我们以Stata提供的网络数据集 nlswork.dta 为例来演示这些命令搭配的用法。nlswork数据集是美国对1968年14-26岁的年轻女性关于就业与工资问题进行的追踪调查,包括年龄、种族、婚姻状况、学历、职业、失业经历、工作时长、工资水平等数据。

读入数据

webuse nlswork, clear

1. missings report

missings report, minimum(100)  //对于所有变量,报告缺失值个数不少于100的变量

missings report, sort show(10) //对于所有变量,按缺失值个数排序,报告前10个变量的缺失值情况

missings report, obs minimum(5) //对于每一行观测值,报告缺失值不少于5的观测值序号及其对应的缺失值个数。

2. missings list

missings list, minimum(5) //对于每一行观测值,列出缺失值不少于5个的观测值(这一结果与上面missings report,obs的结果是一致的,但报告更为详细,请读者自行查看。)

3. missings table

bysort race: missings table, minimum(3) //按照种族分类,对于所有变量,以表格形式列出缺失值个数不少于3的观测值个数(下面结果只展示race=white的结果,其他结果请读者自行查看)。

4. missings tag

missings tag, generate(nmissing) //生成一个新变量nmissing,记录每一行观测值的缺失值个数(部分结果展示如下)

5. missings dropvars

由于原始数据中没有全部观测值都是缺失的变量,为了介绍dropvars的用法,我们需要手动生成此类变量:

generate a1 = . //生成变量a1全部为系统数值型缺失值(.)
generate a2 = .a //生成变量a2全部为扩展类数值型缺失值(.a)
generate a3 = "" //生成变量a3全部为字符型缺失值(“”)
missings dropvars, force sysmiss //删除全部为系统型缺失值(a1)和字符型缺失值(a3)的变量
missings dropvars, force //删除全部为缺失值的变量(a1和a3已在上一步程序中删除,因此此行程序会删除剩余的缺失值变量a2)

6. missings dropobs

missings dropobs age, force //对于变量age,删除缺失的观测值(24条)

(二)简单的缺失值查看器——mdesc

mdesc 是Stata的外部命令,可以通过 ssc install mdesc,replace来下载安装 。该命令是一个简单的缺失值查看器,可以用来查看指定变量的总观测值个数、缺失值个数和占比,其语法如下:

mdesc varlist [if] [in] [, abbreviate(#) any all none ]

常用的选项包括:

① ab(#):设定变量名所占字符数,默认为ab(12)。

② any:对于每行观测值,只要有任何一个变量存在缺失值,则计1次缺失值。

③ all:对于每行观测值,只有所有变量都存在缺失值时,才计1次缺失值。

④ none:报告非缺失值的个数。

我们继续使用刚才的数据集,来介绍这一命令的用法:

webuse nlswork, clear
mdesc //如果未指定变量,则查看全部变量的缺失值情况

mdesc, any ab(4) //在变量名最多占4个字符的变量中,只要有变量存在缺失值,则计为有1次缺失值,并报告缺失值个数

mdesc, all //当每一行中所有变量都存在缺失值时,才计为有1次缺失值,并报告缺失值个数

mdesc, none //在每行中只要有变量为非缺失值,则计为有1次非缺失值,并报告非缺失值个数

尽管使用简单的Stata命令count和drop也可以基本实现查看和删除缺失值的要求,但 missings mdesc 命令为我们提供了更专业、更详细的查看和删除方式 ,如果能熟练掌握,则可以更好地管理数据哟。

注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同,纯属巧合! 以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。 另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

-文字编辑:吴晓蔓-

-技术总编:刘贝贝-







请到「今天看啥」查看全文