跨框架合并数据|frlink的用法,你get到了吗
本文作者:李忠旺,河南大学经济学院
本文编辑:陈丹慧
技术总编:李婷婷
爬虫俱乐部云端课程
导读
数据的合并在我们进行数据分析的过程中非常重要,在Stata中数据合并的命令有很多,例如纵向合并的append命令,以及横向合并中的 merge 和 mergemany 命令等等,这些命令都是数据合并的好帮手,根据不同的需要,大家可以选择最合适的命令来使用。如果我们想要合并的数据存在于两个甚至多个不同的数据集中,就可以使用今天给大家介绍的一种跨框架(frame)的合并命令——frlink。
02frlink命令的简单介绍
frlink命令的完整语法如下:
frlink {1:1|m:1} varlist₁, frame(frame₂ [varlist₂]) [generate(linkvar₁)]
其中,m:1
表示多对一匹配,当前框架中的多个观察值与另一框架中的相同观察值匹配;1:1
则可以视作m:1的特殊形式,表示当前框架中的一个观测值最多只能与另一框架中的一个观测值匹配。varlist₁
:匹配变量,所有的连接都是基于匹配变量的相等性而形成的。当匹配变量的取值在两个框架中相等时,当前框架中的观测值与另一框架中的观测值进行匹配,从而形成连接。连接中可以指定多个匹配变量。frame(frame₂ [varlist₂])
:指定被连接的框架名为frame₂,以及frame₂中的匹配变量名为varlist₂。如果没有指定varlist₂,则默认匹配变量在两框架中具有相同的名称varlist₁。frame()选项为必选项。generate(linkvar₁)
:连接创建好后,将会向当前框架中添加一个连接变量linkvar₁,如果未指定此选项,连接变量将与被连接框架frame₂同名。03实际操练
我们首先创建两个不同的框架classA 和 classB,并在框架下输入数据信息。
clear all
frame rename default classA //将当前默认框架重命名为classA
input student_id history english
1 40 80
2 50 90
3 60 98
4 70 77
end
mkf classB //创建新框架classB
cwf classB //转入新建的框架下
clear
input id math
1 80
2 90
3 78
4 90
end
classA的数据如下:1.连接不同的框架
我们看到classA和classB框架中的数据信息如上图所示,接下来我们在classB框架下用frlink命令进行不同框架之间数据的连接。代码如下:
frlink 1:1 id,frame(classA student_id) gen(mlink) //按照匹配变量id,对框架classA中student_id变量进行连接,将连接变量命名为mlink
br
运行结果如下:
2.访问其它框架下的变量
在有了连接变量之后,怎么能够访问其它框架下的变量呢,接下来先简单介绍一下frlink的搭档 frget。
frget命令的语法如下:
frget varlist,from(linkname) [rename_options]
(1)frget newvar =varname,from(linkname)
(2)语法(1)表示将指定的变量通过linkname连接的框架内复制到当前框架中。在这个例子中linkname就是我们刚刚创建的变量mlink,如果我们想连接classA中相同id下的学生历史成绩。则代码为:
frget history,from(mlink)
br
结果如下:
同理如果我们还想获取学生的英语成绩。则代码为:
frget english,from(mlink)
br
结果如下:
语法(2)表示若获取的是目标框架中的单个变量varname,也可以在当前数据集中将其重命名为newvar。
frget B_history=history,from(mlink) //获取成绩信息变量history,并在当前数据集中命名为B_history
br
结果如下:
[rename_options]
功能,该功能有三个选项 prefix(string)
、suffix(string)
、exclude(varlist)
,它们分别可以为所连接到的变量添加前缀、后缀以及排除掉特定的变量。以刚刚的原始数据为例,我们将连接到的数据加上student作为前缀。frget *,from(mlink) prefix(student_) //其中 * 是指将所有的数据全部复制到当前框架中。
br
运行结果如下:
frget *,from(mlink) suffix(_student)
br
frget *, from(mlink) exclude(his*) //将所有的变量连接到当前框架的数据中,但变量中有前缀his的除外
br
总结来说,frlink命令和frget是相辅相成的,frlink为frget提供连接接口,而frget则可以利用该接口进行数据的复制和转移。
今天的介绍到这里就结束啦,不过frlink作为Stata16的新命令,还有很多知识需要学习哦~
《唐探3》做错了什么?|来自150万字影评的证据
爬虫俱乐部年度总结|《请回答2020》
模糊匹配我只用这一招!
利用tushare获取财务数据
爬虫实战|Selenium爬取微信公众号标题与链接
强大的正则表达式
自动群发邮件(二)——附带附件
自动群发邮件--email和smtplib基本模块的使用
计算工作日的小能手——workdays
Seminar | 企业错报与银行贷款合同
小贴士:Markdown的基本语法
听说相貌也能量化 | 调用百度人脸检测API实现颜值打分
列出指定属性的变量|findname命令比ds命令
Json文件好帮手——JsonPath
pyecharts绘图——河流图展示
你知道MDPI期刊的热门题目吗?
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。