查看原文
其他

复原之神--preserve&restore

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:王玉洁,中南财经政法大学金融学院

本文编辑:温和铭

技术总编:戴   雯

Stata&Python云端课程来啦!

为了平衡团队运营成本,维系公众号的运营,也与国内动辄数千元的Stata课程缩短差距,我们的网课不得不上调价格,我们决定于9月1日起调价,Python课程的价格调整为199.9元Stata进阶课程调为199.9元Stata基础课程调整到229.9元Stata文本分析正则表达式网络爬虫基本字符串课程调整至79.9元。大家可以告知一下身边想要购买的小伙伴,欲购从速哦对报名有任何疑问欢迎在公众号后台和腾讯课堂留言~

导读
hello,大家好呀!小编今天给大家带来了一个超级好用的命令:起死回生命令(preserverestore)。使用Stata时,我们经常会临时删掉或者修改某些变量,然后再还原成原来的样子继续别的研究。一种方法是,在修改原数据前,先save,保存到某个dta文件里面,然后需要还原的时候再use。但是这个方法效率很低。而“preserverestore”能够很好的解决这个问题,接下来我们就一起看看它的强大之处吧!
一、何为“起死回生”命令?

preserve 命令可以把即将要被临时修改的内容保存在一个临时内存空间中,即要修改前,用 preserve进行保存;这样保存的文件,无论以后我们对文件进行什么操作,都可以随时通过restore将preserve命令之前的文件恢复成原来的样子,继续使用和研究,这就是起死回生的内涵和本质。本质了解完之后,让我们再通过几个小例子来实践一下吧!

二、案例应用


案例一

我们先从简单的例子开始,使用Stata自带的auto数据来看一下起死回生命令的强大之处:

clear allsysuse autopreserve //将数据保存在临时空间keep price mpg rep78restore //恢复原数据
整个命令运行完之后,如下图所示,我们可以看到数据又被还原到最初的样子。

然而,当一条一条的运行以上命令时,restore之后将会出现如下图一样的报错,所以切记preserverestore一定要一起运行,否则将会功亏一篑。



案例二

接下来我们增加难度,进入真正的实战。以整理211大学目录为例,我们想要将这些大学的名称合并为一列,并且将变量名改为大学名称,原始数据如下图:

让我们再次一起感受一下preserverestore的好用之处:

clear allcd D:/Stataimport delimited using 211大学.txt, delimiter(";")preserve //将数据保存在临时空间keep v1rename v1 大学名称save 211大学1.dta, replacerestore //恢复原数据

我们发现,preserve之后对数据进行处理和修改再进行restore数据又会恢复成原来的样子。

接着,对v2和v3进行同样的操作后再进行合并就能得到我们想要的结果了。

preservekeep v2rename v2 大学名称save 211大学2.dta, replacerestorekeep v3rename v3 大学名称save 211大学3.dta, replace
use 211大学1.dtaappend using 211大学2.dta 211大学3.dtadrop if 大学名称==""

以上的步骤还是有些小繁琐,我们可以把preserve和restore放到循环中使用,具体命令如下:

clear allcd D:/Stataimport delimited using 211大学.txt, delimiter(";")forvalues i = 1/3 { preserve keep v`i' rename v`i' 大学名称 save 211大学_`i'.dta, replace restore}clearforvalues i = 1/3 { append using 211大学_`i'.dta}drop if 大学名称 == ""
这样来是不是更加简洁方便了呢!


案例三

在第二个例子中,preserverestore的次数相对较少,没有体现出将其写入到循环中的巨大优势,这里我们再使用一个小例子来看看起死回生加循环之后的厉害之处。比如,我们想将cntrade所下载的云南白药的股票数据按年份拆分并且分别保存,具体命令如下:

clear allcntrade 538gen year = year(date)drop dateorder stkcd year //调换变量顺序

结果如图所示:

接下来进行拆分和保存:
forvalues i = 2011/2021{ preserve keep if year== `i' save `i'.dta, replace restore}
结果如图所示:

将起死回生命令写入循环中是不是很好用呢,大家也快来试试吧!需要211大学目录的小伙伴可以在后台回复“211”获取。

以上就是小编今天分享的全部内容啦,心动的小伙伴们赶紧动手试试吧!

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



关注我们,学习更多干货

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





往期推文推荐
         合并,“纵”享新丝滑:frameappend & xframeappend什么是全局配置项?|从零开始的Pyecharts(二)帮你拿下数据可视化|从零开始的Pyecharts 

Stata助力疫情打卡管理——是谁没有接龙呢?

这十年,《金融研究》的编委和读者偏爱哪些研究话题和文章?

【案例展示】Python与数据库交互

学好这一手,英语词典常在手 

玩转Stata中的数学函数

用spmap看中国空气质量

戳穿围城面具:安利&劝退一个专业

走进图文并茂的攻略世界 

玩转word文档“大变身”——wordconvert

数据读入|一文读懂用Stata读入不同类型的数据

简述递归

OpenCV库——轻松更换证件照背景色

800万年薪!还有谁?!

千古伤心词人,词伤几何?

去哪儿网攻略爬取——跟我一起去大理吧

"有你才有团"——Stata爬取王者荣耀英雄海报

爬虫实战|嚣张的徽州宴老板娘错在哪?

如何获取衡量股民情绪的指标?|东方财富股吧标题爬虫

利用Python构建马科维茨有效边界

rangestat,让统计量灵活滚动起来!

听说这样做立项成功率更高哦

如何处理缺失值?这一篇搞定!

善用dataex命令,高效沟通你我他

用Markdown制作简历,强力助力你的求职季

大数据下的大学分数线排行榜,快来围观!

《觉醒年代》—带你回到百年前

用Stata画的三维图很奇怪怎么办?

如何随机生成满足特定数据特征的新变量?

爬取无法翻页网页——自然科学基金项目及可视化

关于我们 


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



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

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

作者署名,并有赏金分成。

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




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

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