查看原文
其他

跨框架数据操作

爬虫俱乐部 Stata and Python数据分析 2023-01-01

本文作者:冀思慧,中南财经政法大学金融学院

本文编辑:赵微微

技术总编:方一卓

Stata&Python云端课程来啦!

      好消息好消息,爬虫俱乐部开辟小鹅通战场!!爬虫俱乐部隆重推出小鹅通网络课程,将Stata基础课程Stata进阶课程Python课程都上传至小鹅通平台,欢迎大家多多支持订阅!报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台留言哦。如需了解详情,可以通过课程链(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~


引言
在数据集合并中,我们经常使用到的有两种类型,分别是纵向合并append和横向合并merge。在之前的推文中,我们展示了如何使用frlink命令实现框架间的横向合并,还学习了如何使用frameappend命令和xframeappend命令来实现框架数据的纵向合并。接下来让我们通过例子来多了解一些实现框架间数据操作的命令。

一:使用frame put命令将所需数据放入框架

以auto数据为例,如果我们只需要其中某几个变量或者通过if/in限定符来获取我们所需要的数据,并将其放入框架,我们可以使用frame put命令,程序如下:

clear allsysuse autoframe put foreign make mpg, into(newf1) //获取其中三个变量frame put if mod(_n,2), into(newf2) //保留奇数行frame change newf1describe
  但是使用该命令存在的一个问题是你不能将观察结果放入现有框架中。

二:使用appand命令实现框架数据纵向合并

我们以auto数据集为例,创建两个框架,通过第三个框架来进行合并,可以在不切换框架的情况下进行操作,具体程序如下:

clear alltempname one two combined
frame create `one'frame change `one'sysuse autokeep if foreignsave `one',replace
frame create `two'frame change `two'sysuse autokeep if !foreignsave `two',replace
frame create `combined'frame `combined': use `one'frame `combined': append using `two'frame change `combined'describetab foreign


三:使用mata向目标框架纵向增加数据
Mata 是 Stata 的组成部分,是可以被交互使用、或作为 do-file 和 ado-file 延伸的矩阵编程语言,运算速度快,当用户希望快速地执行矩阵计算或需要编写复杂的程序时,可以使用 Mata。以auto数据为例,通过条件筛选,向目标框架增加观测值,可以使用mata的方法,程序如下:
clear allsysuse auto, clearframe create newf3frame newf3: { sysuse auto, clear keep mpg weight price foreign make}gen byte touse=(foreign==1)
mata:cwf=st_framecurrent() //st_framcurrent()返回当前框架的名称。st_view(src1=.,.,"mpg foreign","touse") //可以使用help mata st_view()来查看函数使用方法st_sview(src2=.,.,"make","touse") //将变量名为make且touse=1的所有观测值生成名为src2的矩阵 srcnobs=rows(src1) // rows(P)返回P的行数。st_framecurrent("newf3")dstnobs=st_nobs() //st_nobs()返回Stata中当前加载的数据集中定义的观察数。st_addobs(srcnobs) //st_addobs(n)向当前Stata数据集添加n个观察值。st_view (dst1=.,(dstnobs+1,dstnobs+srcnobs),"mpg foreign") //观测值为从“dstnobs+1”到“dstnobs+srcnobs”行st_sview(dst2=.,(dstnobs+1,dstnobs+srcnobs),"make")dst1[.,.]=src1dst2[.,.]=src2st_framecurrent(cwf)end
noi countframe newf3: { noi count noi list}我们可以使用"help mata+函数名称"的命令来学习mate相关函数的用法,观察运行结果可以发现我们成功的向newf3框架的make、mpg、foreign三个变量添加了22行观测值。



四:使用 frlink and frval() 向目标框架增加数据
关于frlink命令及用法介绍,可以浏览之前的推文---《跨框架合并数据|frlink的用法,你get到了吗》《frlink:让连接更具“目的性”》,本文不再进行赘述。
我们以auto数据为例,介绍如何使用 frlink and frval() 向目标框架纵向增加数据,程序如下:
clear allsysuse auto, clearframe create newf4
frame newf4: { sysuse auto,clear keep mpg weight price foreign make}gen byte touse=(foreign==1)bysort touse: gen byte id=_ncount if touselocal srcnobs=r(N)
frame newf4: { local N=_N gen byte touse=0 set obs `=_N+`srcnobs'' replace touse=1 if mi(touse) bysort touse: gen byte id=_n frlink 1:1 touse id, frame(default) foreach v in mpg foreign make { replace `v'=frval(default,`v') if touse } drop touse id default}
noi countframe newf4: { noi count noi list}

 以上就是今天小编为大家介绍的全部内容啦,大家赶快操作一下吧~

最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。






对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!




往期推文推荐      河南大学经济学院2022年Stata数据处理与爬虫技术开班仪式顺利召开

爬虫俱乐部的精彩答疑——local function

爬虫俱乐部精彩答疑——Python中的三种文件读取方法爬虫俱乐部的精彩答疑--认真仔细方能写出好程序
爬虫俱乐部Python精彩答疑——更换Jupyter Notebook浏览器及dropna()参数详解
       爬虫俱乐部的精彩答疑--如何打开Excel中扩展名与文件源码不符的文件

解锁《梦华录》之东京繁华生活

爬虫俱乐部的精彩答疑——DOS命令

爬虫俱乐部的精彩答疑之换行问题

爬虫俱乐部的精彩答疑--路径设置乱码怎么破?

爬虫俱乐部的精彩答疑--putdocx的二三事

爬虫俱乐部精彩答疑之Python篇

爬虫俱乐部的精彩答疑--花式重命名变量

      今天你还是“刘畊宏女孩”吗?

爬虫俱乐部在山东财经大学金融学院暑期Stata网课上的精彩答疑

JupyterNotebook——如何更换默认文档目录

Stata绘图系列——玩转绘图通用选项(一)

出人意料!这所大学的A级学科总数竟超越清华北大!

Stata数据读入——打开方式不同?

数据类型——Dict、Set与Frozenset简析

关于我们 


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

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


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

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