查看原文
其他

Stata版大家来找茬—cfout就够了

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

本文作者:王碧琪

文字编辑:朱巧利

技术总编:张计宝

导读



在做研究的时候,有时需要比较两个相似的数据集的差别,如果相似度特别高,肉眼识别就有些勉强。最近小编发现了一个小命令—cfout,可以轻松实现Stata里的“大家来找茬”。一起来看看吧!


(一)简介


1、命令简介

cfout是一个外源命令,需要下载。使用下面这一行命令即可。

ssc install cfout

下载下来之后,先查看一下命令帮助。

help cfout

作者对它的描述是:比较两个数据集,并将差异保存到文件中。小编一看,这不正是大家来找茬吗?今天我们就找两个相似的数据集,用这个命令来操作一番。

命令的语法是:

cfout [varlist] using filename, id(varlist) [options]

其中varlist是用于比较的变量名,filename是进行比较的dta文件,idvarlist)是唯一的标识变量,将两个dta文件联系起来。

2、数据集简介

本次进行操作的两个数据文件分别为1.dta2.dta,其中包含的数据高度相似,变量名完全相同,观测值数目相同,不同的仅仅是数据集中的个别观测值。其中,uniqueid是二者共同的标识变量。下图是2.dta的部分内容:



(二)应用实例


1、比较两数据集的差别

clear allcd e:/cfoutuse 1,clearcfout region-no_good_at_all using 2, id(uniqueid) //比较region- no_good_at_all这些变量的差别,唯一标识变量是uniqueid

运行结果如下:



结果显示,两数据集中不同的观测值有44个,共比较了15000个观测值,差异率是0.293%

这些差别可以在r返回值中查看:

return list



r(discrep)表示数据集中不同的观测值的数目,rN)是被比较的观测值总数,rNonlyu)表示只出现在usingdta中的观测值数,rNonlym)表示只出现在masterdta中的观测值数。r(varlist)列示了被比较的变量名称。

2.找茬结果输出

cfout命令的选项savingfilename [, sopts])用来输出差异的详细内容。Filename是输出文件的名称,sops中可以指定保留某些变量到结果文件中,以下是几个常用的选项。


variablenewvar

原数据集中的变量名称,默认为Question

mastervalnewvar

master文件变量观测值,默认为Master

usingvalnewvar

using文件变量观测值,默认为Using

allnewvar

保留所有对比结果,不止是区别

keepmastervarlist

保留master文件中指定的变量

keepusingvarlist

保留using文件中指定的变量

propertiespopts

保留变量的某些属性(popts指定)作为新变量


我们现在实现如下目标:将结果文件保存至diffs.dta,把变量名设置为varnamemaster文件中变量观测值命名为master_value,using文件中变量观测值命名为using_value,文件夹中若存在diffs.dta,则替换掉。

use 1,clearcfout region-no_good_at_all using 2, id(uniqueid) saving(diffs, variable(varname) masterval(master_value) usingval(using_value) replace)use diffs



结果依次列示:uniqueid用于定位,区别变量名称,对应的两数据集中的观测值。

这样一来,两数据集的差别就清晰明了地显示出来了,有一种给出了大家来找茬的标准答案的感觉。在处理高度相似的数据集时,可以试试cfout这个命令哦~







对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
另辟蹊径js逆向爬取百度翻译
可迭代对象、迭代器、生成器傻傻分不清楚
Ftools命令组之fegen命令介绍
提升效率的利器——如何用labvarch批量修改变量标签
二进制序列类型——bytes()、bytearray()
今日头条海外疫情数据爬取
anythingtodate带你轻松处理日期
_variables介绍
查询12306车次信息
海外疫情仍严峻,劝君更在家中留
国外疫情怎么看?——实时新闻获真知

基于贝叶斯定理的算法——朴素贝叶斯分类

中国知网爬虫(CNKI) 批量下载PDF格式论文
sencode命令介绍
Ftools命令组之fisid命令和fsort命令介绍
“抽丝剥茧”,层层下分——机器学习基本算法之决策树

爬取东方财富网当日股票交易情况

关于我们



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

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

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

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