跨框架数据操作
本文作者:冀思慧,中南财经政法大学金融学院
本文编辑:赵微微
技术总编:方一卓
Stata&Python云端课程来啦!
好消息好消息,爬虫俱乐部开辟小鹅通战场!!爬虫俱乐部隆重推出小鹅通网络课程,将Stata基础课程,Stata进阶课程和Python课程都上传至小鹅通平台,欢迎大家多多支持订阅!报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台留言哦。如需了解详情,可以通过课程链(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~
一:使用frame put命令将所需数据放入框架
以auto数据为例,如果我们只需要其中某几个变量或者通过if/in限定符来获取我们所需要的数据,并将其放入框架,我们可以使用frame put命令,程序如下:
clear all
sysuse auto
frame put foreign make mpg, into(newf1) //获取其中三个变量
frame put if mod(_n,2), into(newf2) //保留奇数行
frame change newf1
describe
二:使用appand命令实现框架数据纵向合并
我们以auto数据集为例,创建两个框架,通过第三个框架来进行合并,可以在不切换框架的情况下进行操作,具体程序如下:
clear all
tempname one two combined
frame create `one'
frame change `one'
sysuse auto
keep if foreign
save `one',replace
frame create `two'
frame change `two'
sysuse auto
keep if !foreign
save `two',replace
frame create `combined'
frame `combined': use `one'
frame `combined': append using `two'
frame change `combined'
describe
tab foreign
三:使用mata向目标框架纵向增加数据
clear all
sysuse auto, clear
frame create newf3
frame 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[.,.]=src1
dst2[.,.]=src2
st_framecurrent(cwf)
end
noi count
frame newf3: {
noi count
noi list
}
我们可以使用"help mata+函数名称"的命令来学习mate相关函数的用法,观察运行结果可以发现我们成功的向newf3框架的make、mpg、foreign三个变量添加了22行观测值。四:使用 frlink and frval() 向目标框架增加数据
clear all
sysuse auto, clear
frame create newf4
frame newf4: {
sysuse auto,clear
keep mpg weight price foreign make
}
gen byte touse=(foreign==1)
bysort touse: gen byte id=_n
count if touse
local 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 count
frame newf4: {
noi count
noi list
}
以上就是今天小编为大家介绍的全部内容啦,大家赶快操作一下吧~
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
爬虫俱乐部的精彩答疑——local function
爬虫俱乐部精彩答疑——Python中的三种文件读取方法爬虫俱乐部的精彩答疑--认真仔细方能写出好程序爬虫俱乐部Python精彩答疑——更换Jupyter Notebook浏览器及dropna()参数详解
爬虫俱乐部的精彩答疑--如何打开Excel中扩展名与文件源码不符的文件
解锁《梦华录》之东京繁华生活
爬虫俱乐部的精彩答疑——DOS命令
爬虫俱乐部的精彩答疑之换行问题
爬虫俱乐部的精彩答疑--路径设置乱码怎么破?
爬虫俱乐部的精彩答疑--putdocx的二三事
爬虫俱乐部精彩答疑之Python篇
爬虫俱乐部的精彩答疑--花式重命名变量
今天你还是“刘畊宏女孩”吗?爬虫俱乐部在山东财经大学金融学院暑期Stata网课上的精彩答疑
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)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。