查看原文
其他

Vardistinct一键去重计数

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:王碧琪 文字编辑:朱巧利 技术总编:张计宝

最近小编在处理数据时希望对变量去重并进行统计,在网上搜到了这样一个命令vardistinct。它本是c语言的一个命令,相应地有人开发出了Stata中的vardistinct命令,用于去重计数。在往期推文《数据,我要拷打你》中介绍了tabletabulate的用法,可以实现对变量的基础统计。本期推文介绍的命令专注于去重统计,一起来看看吧~~


一、简介


首先需要安装。

ssc install vardistinct

接下来查看命令帮助。

help vardistinct

作者的描述是:生成代表不同观察值的数量的变量。简单来说,就是统计非重复变量值的个数,这就是小编要实现的去重统计功能。

基本语法如下:

vardistinct varlist [if] [in] , generate(newvar) [ by(varlist) missing ]

其中,varlist是待处理的变量(一个或者多个),generate设置生成新变量newvar,另外可以加上by选项和missing选项。


二、案例实操


(一)基础语句

auto数据为例,统计rep78的非重复取值数。

sysuse auto,cleartabulate rep78 //查看rep78的频率表return list



结果显示,rep78有五个取值12345

vardistinct rep78, generate(newvar1)tab newvar1



可以看到newvar1取值为5,即rep78的去重变量值个数为5

此时观察一下结果的不同,可以发现tabulate中只统计了69个观测值,而newvar174个观测值,这是为什么呢?小编检查之后发现,tab在统计时没有报告缺失值,所以接下来介绍加入缺失值的做法。


(二)加入missing选项

使用missing选项加入缺失值。仍然统计rep78的非重复取值数,不同的是把缺失值包含进去。

tab rep78,m //查看rep78的频率表,包含缺失值return list



结果显示,统计报告中加入缺失值后,rep786个取值1-5以及缺失值。

vardistinct rep78, generate(newvar2) missingtab newvar2



结果显示加入missing选项生成的newvar2的取值为6,说明rep786个不同取值。


(三)加入by选项
tab foreign //查看foreign的取值情况,foreign有两个取值domestic、foreignvardistinct rep78, by(foreign) generate(newvar3) //按照foreign取值,分组统计rep78的非重复取值数,生成新变量newvar3tab newvar3 foreigntab rep78 if foreign==0tab rep78 if foreign==1



结果显示,当汽车为国内产时,newvar3是5;当汽车为国外产时,newvar3取值为3。国产车的rep78有5个非重复取值1、2、3、4、5,国外车的rep78有3个非重复取值3、4、5。

这样就实现了变量值的去重统计了。在对于数据中的变量只需要去重计数的时候,可以尝试一下vardistinct命令哦~~







对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
从statsmodels到线性回归

Pandas的GroupBy机制

首行数据如何快速转变量名?

文件太多乱乱的?合并一下吧!
线性回归的正则化 ——岭回归与LASSO回归
Pandas中节约空间的小tip—categorical类型
Ftools命令组之flevelsof命令介绍
疫情下的家庭关系|《请回答1988》影评爬取
教你把Python当美图秀秀用(二)
自己动手进行线性回归计算
personage与年龄
原来这才是查看盲评结果的正确方式
教你把Python当美图秀秀用(一)
用数据透视表剖析泰坦尼克号乘客数据
读入文本文档,intext来帮忙
matchit——解锁文本相似度的钥匙
基于广义线性模型的机器学习算法——线性回归

关于我们



微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存