大家用Stata来“找茬”
本文作者:陈梦华,河南大学经济学院
本文编辑:刘子艳
技术总编:李婷婷
Stata&Python云端课程来啦!
寒雪梅中尽,春风柳上归。为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》;原价600元的正则表达式课程,现在仅需49.9元,详情请查看推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》;原价600元的基本字符串函数课程,现在仅需49.9元,更多信息请查看推文《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》;原价600元的网络爬虫课程,现在仅需49.9元,更多信息请查看推文《与春天有个约会,爬虫俱乐部重磅推出网络爬虫专题课程》;原价600元的文本分析课程,现在仅需49.9元,更多信息请查看推文《与春天有个约会,爬虫俱乐部重磅推出文本分析网络课程》。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!一、cf命令:对比两个数据集里相同变量的取值
1、命令介绍及基本语法
cf命令是Stata的官方命令,我们首先来了解一下它。
基本语法:
cf varlist using filename [,all verbose]
这个命令可以将在Stata中已经打开的数据(主数据)和使用数据集(using使用数据)中的相同变量的取值进行比较。如果指定变量的取值相同,结果窗口返回结果为空;如果有任何不同,则返回r(9)。cf命令只比较变量值,变量名、变量标签、值标签、注释、特征等都不进行比较。
选项含义
varlist:变量名,cf命令既可以对比一个变量,也可以对比多个变量,直至对比数据里面所有变量(_all)的取值。
filename:数据集名称,这个数据为使用数据。
all:结果窗口会显示varlist中每个变量取值的比较结果(除非只加了选项all,否则只显示不同变量的结果)。数值完全匹配上的变量标记为“match”,匹配不上的标记为“mismatches”。
verbose:只列出匹配不上的变量,同时详细给出每个变量不同取值的详细结果。
选项all和verbose可以同时使用,显示结果综合了这两个选项的功能。但通常比对是为了找出不匹配的变量取值,所以多数情况只加选项varlist。
2、cf命令的运用
为大家举个简单的小栗子来加深一下对cf命令的理解吧~
sysuse auto,clear
replace price = price+100 in 1/10
replace mpg = mpg-5 in 3/8
save auto1.dta,replace //变量price的1-10观测值在原来的基础上加了100、变量mpg的3-8观测值在原来的基础上减了5,保存为新的数据auto1.dta
sysuse auto,clear //重新调用auto数据,作为主数据
cf price mpg using auto1,all verbose //将主数据和使用数据auto1中price和mpg两个变量的取值进行对比
运行结果如下:
结果窗口返回r(9),变量price有10个取值不同,变量mpg有6个取值不同,并且详细给出了不同取值的观测值序号以及分别在主数据和使用数据中的取值。
如果在程序中不使用all这个选项,得到的结果与上述结果是一致的。如果去掉verbose这个选项,则只显示各变量取值不匹配的个数。
cf price mpg using auto1,all
结果如图所示:
return list
r()的返回值中是有差异的观测值个数。
注意
cf命令比对的两个数据包含的观测值个数必须相同,否则运行cf命令将会无结果;
cf命令比对的两个数据变量个数可以不同,但是cf命令只比对两个数据中都含有的变量;
cf命令依据变量名做比对,故两个数据中的变量名必须是相同的。
二、cfvars命令:对比两个数据集里的变量名
cfvars命令不是Stata的官方命令,是一个外部命令,需要通过ssc install进行手动安装,安装成功结果如下图所示:
1、基本语法
cfvars filename1 [ filename2 ]
filename1和filename2是两个将要对比的数据集名称。
这个命令可以显示出两个数据集中共有的变量、仅在filename1里有的变量和仅在filename2里有的变量。
这个命令的使用有两种操作方法:
一种是可以先打开一个数据集,然后在命令cfvars后面加上要对比的数据集的名称即可。还有一种方法是直接在命令cfvars后面加上要对比的两个数据集名称,这时需要保证Stata没有正在运行的数据。
2、例子
1) 第一种方法
sysuse auto,clear
drop mpg //将auto数据里的mpg变量去掉
cfvars auto.dta //直接与原始数据auto比较
2) 第二种方法
sysuse auto,clear
drop mpg
save auto2.dta,replace //将auto数据里的mpg变量去掉后保存为新的数据auto2
clear all //清空内存,保证没有正在运行的数据
cfvars auto.dta auto2.dta //cfvars命令后加上用来对比的两个数据集的名称
两种程序最终显示的结果是一样的:
结果报告了两个数据集共有的变量和仅在auto.dta数据集里包含的变量。
再来看一下它的返回值包括哪些吧~
return list
r(same)为1时,代表两组数据的变量名完全一样;否则,为0。
r(oneonly)列出只存在第一个数据集(filename1)里的变量名。
r(twoonly)列出只存在第二个数据集(filename2)里的变量名。
r(both)列出两个数据集中共有的变量名。
注意
事实上,命令cf加上选项all verbose后也能逐一显示出每个变量的比对情况,但cf要求要比对的两个数据里必须要包含相同的观测值个数,而cfvars则没有这个要求。
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
雪球网关注度监测:关注人数Top10的证券原来是这些!你持有的股票上榜了吗?
Python与百度地图合璧,绘制棒呆的热力地图
【数据可视化】统计图绘制神器:Seaborn
【爬虫实战】双一流大学的月关注度
【爬虫实战】“中国人不吃这一套”——人民日报微博评论分析
“学术明星”——双重差分法(DID)的Stata操作
【爬虫实战】南京地铁又上热榜——客流量分析
Stata中字符串的处理
我在哪里?调用高德API获取地址经纬度信息
超级简单的条件函数,轻松生成虚拟变量
Python云端课程福利大放送!0基础也能学~
【爬虫实战】“我们,继续新故事”——爬取LOL英雄皮肤
“人像动漫化”—Python实现抖音特效
《唐探3》做错了什么?|来自150万字影评的证据
爬虫俱乐部年度总结|《请回答2020》
模糊匹配我只用这一招!
利用tushare获取财务数据
关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。