查看原文
其他

Stata16新功能之“框架”——基础命令大合集(2)

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

本文作者:王   悦

文字编辑:李钊颖

技术总编:李朋冲 

重磅!!!爬虫俱乐部将于2019年10月2日至10月5日在湖北武汉举行Python编程技术培训,本次培训采用理论与案例相结合的方式,旨在帮助零基础学员轻松入门Python,由浅入深学习和掌握Python编程技术,尤其是爬虫技术和文本分析技术。该培训目前在火热招生中,点击《爬虫俱乐部2019十一Python编程技术培训报名啦!》或点击文末阅读原文,了解培训详细信息,抓紧时间报名吧!

上篇推文《Stata16新功能之“框架”——读入多个数据集(1)》中,我们介绍了Stata16允许将多个数据导入不同的数据框架中,以及使用框架的便捷和优势。框架本质上就是一个存放数据的容器,Stata16允许在内存中同时存在多个框架,接下来我们对框架中所涉及的基础命令进行汇总,以便大家对frame有更全面的认识。

Stata16的内存中自带框架default,在向内存中读入第一个数据集的时候,它被默认加载到default框架下。我们可以通过frame dir查看当前内存中所有的框架信息,包括数据的维度、数据标签(如果有的话),以及一个指示符(指示自上次保存以来,框架中的数据是否发生了更改):
clear allsysuse auto, clear //数据auto.dta默认被导入到框架default中frame dir //显示内存中已有的框架信息

frame dir结果显示:内存中有一个名为default的框架,储存的数据集有74行观测值,12个变量,数据标签为1978年的汽车数据。
此刻如果想再读入数据,首先需要新建框架作为容纳数据集的载体:
frame create new //创建了一个新的空白框架newframe dir

mkf(make frame)同样可以用于创建新的框架,与frame create等价。在内存中已有两个框架(default和new)的情况下,哪一个才是当前的工作框架呢?(在不做特殊规定的情况下,Stata中执行的所有命令只对工作框架的数据集起作用,而不会影响到其他框架。)我们可以使用命令frame(等价命令为pwf和frame pwf)来查看工作框架:

frame //展示当前工作框架的名称pwf //pwf=print working frameframe pwf

结果显示当前框架为default,此刻如果要向框架new中读入数据,有两种解决方法:1)通过frame change(或cwf)指定new为当前工作框架:
frame change newframesysuse census,clearframe dir

2)通过frame前缀在另一框架中执行一个或多个Stata命令,这不会改变当前框架。如果执行单个Stata命令,在冒号后接具体指令即可,而花括号内可输入多行Stata命令,frame前缀使得我们可以更灵活地对框架中的数据进行处理。用法举例如下:

frame new:sysuse census, clear frames new { summarize list in 1/3}

如果我们想对某个数据集进行处理,但不想破坏原始数据,可先对存储原始数据的框架进行备份:

frame copy default auto, replace //将框架default的内容复制到框架auto中frame dir

框架的复制,本质上是框架中装载的数据集的复制。除了复制整个框架,我们也可以对当前框架中的子集(特定的变量或者观测值)进行复制:
frame change defaultframe put make price mpg, into(fr1) //将变量复制到框架fr1中frame put if rep78 !=., into(fr2) //将rep78不是缺失值的观测值复制到框架fr2中frame dir

此时frame dir的结果与之前稍有不同:由于fr1和fr2中的数据未进行保存,框架前被标注“*”,Stata16用这种方法提醒用户注意对数据的存储,如果需要保存框架中的数据集,只需输入:

frame fr1: save results.dta, replaceframe dir //框架fr1前的星号消失,数据已被保存

对框架的保存,实际上是对框架里的数据进行保存,保存后即使删除框架,该数据仍然存在于Stata当前的工作路径下。

有时我们希望框架名能够反映数据集中的信息,例如框架new中的数据集是census,这时需要对已有框架重新命名:

frame rename new censusframe dir

原本的框架new现在更名为census,里面的数据集没有发生任何变化。

 

既然可以创建框架,当然也能够删除某个框架。如果只是删除单个框架,可以使用frame drop,此处有两点需要注意:1)frame drop一次只能删除一个框架;2)无法删除当前工作框架。

frame drop fr2 //因为我们未对fr2进行保存,所以框架中的数据也一并删除frame dirframe frame drop default //无法删除当前的工作框架

如果想把内存中所有框架一次性删除,可以使用frame reset

frame reset //Stata将恢复到初始状态,即只有一个名为default的空白框架clear frames //不能是clear frame,删除某个框架使用frame drop即可frame dir

清空内存中的框架后,只剩下系统自带的框架default,且里面的数据为空。此刻提醒大家,删除所有框架一定要慎重!!!

      

关于框架的基础命令,我们已介绍完毕,此刻大家对框架也已经有了一个全面的了解。框架其实并不复杂,它无非就是一个储存数据的容器。有了前面这些基础知识作为铺垫,在下篇推文中,我们将介绍框架中最亮眼的一个功能:在框架和框架之间建立连接,使得被连接框架中的所有变量能够被当前框架访问。

对爬虫俱乐部的推文累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫!

往期推文推荐

三分钟教你读懂Python报错
解析XML文件
命令更新之reg2docx:将回归结果输出到word
命令更新之t2docx——报告分组均值t检验
爬虫俱乐部2019十一Python编程技术培训报名啦!
数据类型——Dict、Set与Frozenset简析

数据类型介绍——tuple、list和range对象

把pdf文件批量转成docx文件

格式化字符串方法的比较

       朝花夕拾—— 如何输出内存中的矩阵与绘图

       Stata16新功能——定义图形元素的绝对大小

       将数值型计算“一网打尽”——(1)

       Stata16新功能之“框架”——读入多个数据集(1)

      手持Python,斗图不输!

      朝花夕拾——cnstock与cntrade强强联合

       Stata16之do-file更新(1)——再见外部文本编辑器~

关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。


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

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。



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

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