Vardistinct一键去重计数
本文作者:王碧琪 文字编辑:朱巧利 技术总编:张计宝
最近小编在处理数据时希望对变量去重并进行统计,在网上搜到了这样一个命令vardistinct。它本是c语言的一个命令,相应地有人开发出了Stata中的vardistinct命令,用于去重计数。在往期推文《数据,我要拷打你》中介绍了table和tabulate的用法,可以实现对变量的基础统计。本期推文介绍的命令专注于去重统计,一起来看看吧~~
一、简介
首先需要安装。
ssc install vardistinct
接下来查看命令帮助。
help vardistinct
作者的描述是:生成代表不同观察值的数量的变量。简单来说,就是统计非重复变量值的个数,这就是小编要实现的去重统计功能。
基本语法如下:
vardistinct varlist [if] [in] , generate(newvar) [ by(varlist) missing ]
其中,varlist是待处理的变量(一个或者多个),generate设置生成新变量newvar,另外可以加上by选项和missing选项。
二、案例实操
以auto数据为例,统计rep78的非重复取值数。
sysuse auto,clear
tabulate rep78 //查看rep78的频率表
return list
结果显示,rep78有五个取值1、2、3、4、5。
vardistinct rep78, generate(newvar1)
tab newvar1
可以看到newvar1取值为5,即rep78的去重变量值个数为5。
此时观察一下结果的不同,可以发现tabulate中只统计了69个观测值,而newvar1有74个观测值,这是为什么呢?小编检查之后发现,tab在统计时没有报告缺失值,所以接下来介绍加入缺失值的做法。
使用missing选项加入缺失值。仍然统计rep78的非重复取值数,不同的是把缺失值包含进去。
tab rep78,m //查看rep78的频率表,包含缺失值
return list
结果显示,统计报告中加入缺失值后,rep78有6个取值1-5以及缺失值。
vardistinct rep78, generate(newvar2) missing
tab newvar2
结果显示加入missing选项生成的newvar2的取值为6,说明rep78有6个不同取值。
tab foreign //查看foreign的取值情况,foreign有两个取值domestic、foreign
vardistinct rep78, by(foreign) generate(newvar3) //按照foreign取值,分组统计rep78的非重复取值数,生成新变量newvar3
tab newvar3 foreign
tab rep78 if foreign==0
tab rep78 if foreign==1
结果显示,当汽车为国内产时,newvar3是5;当汽车为国外产时,newvar3取值为3。国产车的rep78有5个非重复取值1、2、3、4、5,国外车的rep78有3个非重复取值3、4、5。
这样就实现了变量值的去重统计了。在对于数据中的变量只需要去重计数的时候,可以尝试一下vardistinct命令哦~~
关于我们
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。