合并,“纵”享新丝滑:frameappend & xframeappend
本文作者:温和铭,中南财经政法大学统计与数学学院
本文编辑:王玉洁
技术总编:戴 雯
Stata&Python云端课程来啦!
为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》、《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。
在数据集合并中,我们经常使用到的有两种类型,分别是纵向合并append
和横向合并merge
。在之前的推文中,我们详细介绍了Stata16推出的frame框架的含义和使用方法,还展示了如何使用frlink
命令实现框架间的横向合并。
往期推文回顾(戳蓝字可以重温)
frameappend
命令和帝国理工大学的 Roger Newson 开发的升级版命令xframeappend
,实现框架数据的纵向合并,让数据整理更“丝滑”~frameappend
和xframeappend
是由用户自主开发的,并不是Stata的原装产品,所以在愉快地使用这两个命令前,我们需要先在Stata中进行模块的安装:ssc install frameappend
ssc install xframeappend
help frameappend
help xframeappend
1.1 frameappend
命令
append翻译过来就是附加、增补,在Stata中,当数据集需要追加样本,即增添行数据时,append
就派上了用场,frameappend
的用法也大同小异,只不过是将连接的数据集换成了框架,具体语法如下:
/*将名为framename的框架中的内容追加到当前框架的末尾*/
frameappend framename [, drop]
drop
:删除已合并进去的框架1.2xframeappend
命令
当frameappend
还不足以满足用户的需要时,xframeappend
就应运而生了,作为前者的plus版本,xframeappend
的作用对象不再是单个的数据框架,而是一整串的框架列表,同时还提供了更多的可选项,语法如下:
/*将名为framelist的框架列表中的一个或多个框架的内容附加到当前框架的末尾*/
xframeappend framelist [ , drop generate(newvarname) fast ]
drop
:从框架列表中删除已合并进去的框架。generate(newvarname)
:变量名newvarname用于标记数据个案来源,若该变量为0,表示数据来源于当前框架;若该变量为k = 1,2,…,则表示数据个案来源于框架列表中的第k个框架,依次类推。fast
:指定当程序执行失败或用户按下Break时,将不做任何额外的工作来恢复当前框架中的原始数据集。2.1frameappend
进行单个框架连接
由于开发者并没有给出可供参考的案例,故我们从国泰安数据库分别收集了2020年创业板和科创板的偿债能力信息,进行框架数据合并,首先将下载的Excel表格导入Stata数据集,命令如下:
clear all
import excel "D:\2020创业板偿债能力信息.xlsx", firstrow //导入创业板数据
frame dir //显示内存中已有的框架信息
此时第一个表格已经成功导入,可以看到,该数据集共有7个变量,337条观测值。
frame dir
,发现目前内存中的框架只有default主框架一个,且星号标志说明其内部数据未保存,故输入命令保存数据集:frame default: save 2020_1.dta, replace //保存当前数据,并命名为2020_1
frame dir //检查是否保存
frame create new //新建一个名为new的框架
frame change new //切换到new框架
import excel "D:\2020科创板偿债能力信息.xlsx", firstrow //导入科创板信息
frame new: save 2020_2.dta, replace //保存当前数据,并命名为2020_2
frame dir //查看框架信息
可以看到,“2020科创板偿债能力信息.xlsx”也已经变成了“2020_2.dta”保存在new框架中,自此,我们实现了分别将两个表格存入两个不同的数据框中,2020_1.dta保存在default即原框架,2020_2.dta保存在new框架,相当于一个Excel表格中的两个sheet。
随后,到了我们的重头戏,使用frameappend
将上述两个框架拼接起来,这里选择的是将new框架添加进default框架也就是默认的主框架中:
frame change default //切换到default框架
frame //确定当前的框架
注意:建议每次在框架中处理数据之前,都输入frame
检查当前在哪个框架,避免出错!
frameappend new //将框架new中的数据合并到当前框架末尾
frameappend new, drop //将框架new中的数据合并到当前框架末尾,并删除new框架
frame dir
2.2xframeappend
进行多个框架连接
第一步还是导入数据(表格仍取自国泰安数据库):
clear all //清除所有框架信息
frame //确认当前的框架为default
import excel "D:\2020创业板偿债能力信息.xlsx", firstrow //导入创业板信息
keep in 1/5 //保留前五个观测值
frame default: save 2020.dta, replace //保存当前数据,并命名为2020
frame dir //显示内存中已有的框架信息
keep in
只保留表格中前五个观测值,接下来新建框架fr1、fr2、fr3,将2017~2019年的表格分别导入三个框架中,过程与上述操作类似,话不多说,直接上代码:/*导入2019年数据*/
frame create fr1 //新建一个名为fr1的框架
frame change fr1 //切换到fr1
import excel "D:\2019创业板偿债能力信息.xlsx", firstrow //导入2019创业板信息
keep in 1/5 //保留前五个观测值
frame fr1: save 2019.dta, replace //保存当前数据,并命名为2019
frame dir //查看框架信息
/*导入2018年数据*/
frame create fr2 //新建一个名为fr2的框架
frame change fr2 //切换到fr2
import excel "D:\2018创业板偿债能力信息.xlsx", firstrow //导入2018创业板信息
keep in 1/5 //保留前五个观测值
frame fr2: save 2018.dta, replace //保存当前数据,并命名为2018
frame dir //查看框架信息
/*导入2017年数据*/
frame create fr3 //新建一个名为fr3的框架
frame change fr3 //切换到fr3
import excel "D:\2017创业板偿债能力信息.xlsx", firstrow //导入2017创业板信息
keep in 1/5 //保留前五个观测值
frame fr3: save 2017.dta, replace //保存当前数据,并命名为2017
frame dir //查看框架信息
frame 框架名:save
保存数据集时,要注意框架名是否正确,否则会不慎覆盖其他框架的数据集!frame change default //切换到default框架
xframeappend fr1 fr2 fr3, gen(num) //将框架列表fr1,fr2,fr3合并进default,生成新变量num记录个案来源
frame dir //查看框架信息
xframeappend
语句,就把四个框架纵向合并到了一起,推广到大型的面板数据处理,可谓是提高效率的好帮手。怎么样,如此“丝滑”的数据合并有没有让你心动呢?frameappend
和xframeappend
命令简单的使用介绍,掌握frame框架下的一些小命令,或许就能对数据处理起到大作用,以后我们还将陆续介绍其它有关frame的命令,敬请期待吧~对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推 什么是全局配置项?|从零开始的Pyecharts(二) 帮你拿下数据可视化|从零开始的Pyecharts
Stata助力疫情打卡管理——是谁没有接龙呢?
这十年,《金融研究》的编委和读者偏爱哪些研究话题和文章?【案例展示】Python与数据库交互
学好这一手,英语词典常在手玩转Stata中的数学函数
用spmap看中国空气质量戳穿围城面具:安利&劝退一个专业
走进图文并茂的攻略世界
玩转word文档“大变身”——wordconvert
简述递归
OpenCV库——轻松更换证件照背景色800万年薪!还有谁?!
千古伤心词人,词伤几何?
去哪儿网攻略爬取——跟我一起去大理吧
"有你才有团"——Stata爬取王者荣耀英雄海报
如何获取衡量股民情绪的指标?|东方财富股吧标题爬虫
利用Python构建马科维茨有效边界
rangestat,让统计量灵活滚动起来!
听说这样做立项成功率更高哦
如何处理缺失值?这一篇搞定!
善用dataex命令,高效沟通你我他
大数据下的大学分数线排行榜,快来围观!
《觉醒年代》—带你回到百年前
用Stata画的三维图很奇怪怎么办?
如何随机生成满足特定数据特征的新变量?
爬取无法翻页网页——自然科学基金项目及可视化
爬取京东评论数据进行情感分类
关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为
作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。