Stata16新功能之“框架”——基础命令大合集(2)
本文作者:王 悦
文字编辑:李钊颖
技术总编:李朋冲
上篇推文《Stata16新功能之“框架”——读入多个数据集(1)》中,我们介绍了Stata16允许将多个数据导入不同的数据框架中,以及使用框架的便捷和优势。框架本质上就是一个存放数据的容器,Stata16允许在内存中同时存在多个框架,接下来我们对框架中所涉及的基础命令进行汇总,以便大家对frame有更全面的认识。
clear all
sysuse auto, clear //数据auto.dta默认被导入到框架default中
frame dir //显示内存中已有的框架信息
frame create new //创建了一个新的空白框架new
frame dir
mkf(make frame)同样可以用于创建新的框架,与frame create等价。在内存中已有两个框架(default和new)的情况下,哪一个才是当前的工作框架呢?(在不做特殊规定的情况下,Stata中执行的所有命令只对工作框架的数据集起作用,而不会影响到其他框架。)我们可以使用命令frame(等价命令为pwf和frame pwf)来查看工作框架:
frame //展示当前工作框架的名称
pwf //pwf=print working frame
frame pwf
frame change new
frame
sysuse census,clear
frame 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 default
frame 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, replace
frame dir //框架fr1前的星号消失,数据已被保存
对框架的保存,实际上是对框架里的数据进行保存,保存后即使删除框架,该数据仍然存在于Stata当前的工作路径下。
有时我们希望框架名能够反映数据集中的信息,例如框架new中的数据集是census,这时需要对已有框架重新命名:
frame rename new census
frame dir
原本的框架new现在更名为census,里面的数据集没有发生任何变化。
既然可以创建框架,当然也能够删除某个框架。如果只是删除单个框架,可以使用frame drop,此处有两点需要注意:1)frame drop一次只能删除一个框架;2)无法删除当前工作框架。
frame drop fr2 //因为我们未对fr2进行保存,所以框架中的数据也一并删除
frame dir
frame
frame drop default //无法删除当前的工作框架
如果想把内存中所有框架一次性删除,可以使用frame reset:
frame reset //Stata将恢复到初始状态,即只有一个名为default的空白框架
clear frames //不能是clear frame,删除某个框架使用frame drop即可
frame dir
关于框架的基础命令,我们已介绍完毕,此刻大家对框架也已经有了一个全面的了解。框架其实并不复杂,它无非就是一个储存数据的容器。有了前面这些基础知识作为铺垫,在下篇推文中,我们将介绍框架中最亮眼的一个功能:在框架和框架之间建立连接,使得被连接框架中的所有变量能够被当前框架访问。
对爬虫俱乐部的推文累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫!
往期推文推荐
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。