Stata16新功能之“框架”——frlink连接多个数据集(3)
本文作者:王 悦
文字编辑:王碧琪
技术总编:李朋冲
在之前的推文《Stata16新功能之“框架”——读入多个数据集(1)》和《Stata16新功能之“框架”——基础命令大合集(2)》中,我们将框架的定义及所有的基础命令做了详细的介绍。有时我们还会遇到这样的情况:目标变量存在于两个甚至多个不同的数据集中,此时,我们需要某种方法将数据集连接起来,使得不同数据集中的变量能够相互连通,以便进一步分析。
Stata16通过引入新命令frlink,打破了变量间的“隔阂”。frlink可以根据某个变量,在当前框架与另一指定框架之间创建连接,使得被连接框架中的所有变量能够被当前框架访问。
clear frames
webuse persons //persons.dta默认被储存在框架default中
br
frame create txcounty
frame txcounty: webuse txcounty //txcounty.dta被储存在框架txcounty中
frame change txcounty
br
txcounty.dta描述了美国德克萨斯州下属某些县家庭收入的平均数,它同样包含了变量countyid。countyid看似为字符型变量,实际上是加了标签的数值型变量,我们可以使用命令codebook来查看其具体的标签值:
codebook countyid //查看countyid标签值对应的数值
其中Brazos对应的数值为1,Dallas对应的数值为2……具体结果如下:
接下来,对框架default和txcounty进行连接:
frame change default
frlink m:1 countyid,frame(txcounty) //按照匹配变量countyid,对框架default和txcounty中的数据进行连接
frlink dir //列出连接变量的名称
frlink describe txcounty //列出连接变量的详细信息,并验证它是否有效
br
frlink的子命令frlink dir告诉我们,新创建的连接变量名为txcounty,这是因为我们没有添加frlink的选项generate()指定连接变量的名称,所以默认以被连接框架txcounty来命名连接变量,而frlink describe则表明该连接变量有效。连接完成后当前框架中的数据如下图所示:
针对连接变量,有一点需要注意:不要随意修改连接变量,否则将会使其失效,这将影响后续对被连接框架中变量的访问。
replace txcounty = 0 if txcounty == 5
frlink describe txcounty
在更改了连接变量txcounty后,再使用frlink describe将会提示:由于连接创建后数据被修改,所以连接变量失效,建议输入frlink rebuild txcounty对连接进行修复。子命令frlink rebuild能够在数据更改或框架被重命名时重建现有连接。
frlink rebuild txcounty
执行后,结果如图:
这表明变量txcounty被成功重建。
2.访问其他框架下的变量
进一步,在连接创建后,我们还可以利用函数frval()返回被连接框架中变量的值;也可以使用frget向当前框架的数据集中,添加被连接框架中的变量。我们通过下面的例子来简单介绍,如何调用被连接框架中的变量。
gen relative_income = income / frval(txcounty, median_income)
summarize relative_income
如果我们想要把被连接框架txcounty中的变量median_income添加到person.dta中(default框架),然后进行一个线性回归,可以先使用命令frget将变量从被连接的框架复制到当前框架,程序如下:
frget median_income, from(txcounty)
regress income relative_income median_income
可以看到,运行结果显示有一个变量从被连接框架中复制了过来,此时查看内存中的数据,能够观测到新生成的变量relative_income和复制过来的变量median_income。
框架作为Stata16新推出的功能,成功打破了在Stata内存中一次只能读入一个数据集的界限,框架和框架之间建立连接后,可以实现对被连接框架中数据的访问。在财务会计领域,某些指标的计算会涉及到不同数据集的变量,框架的存在使得我们对于此类指标的计算,多了一种全新的选择。
对爬虫俱乐部的推文累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫!
往期推文推荐
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。