换装术|多个Excel文件如何一键转为dta格式
本文作者:冀思慧,中南财经政法大学金融学院
本文编辑:魏若芙
技术总编:戴 雯
Stata&Python云端课程来啦!
为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程、Stata基础课程、Stata进阶课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~
我们使用Stata处理数据时,第一步需要将数据读入,当我们遇到的数据为dta格式时,我们可以使用use/sysuse命令来直接进行读入;当我们遇到Excel文件时应当如何操作呢?下面我们学习如何将Excel文件读入到Stata中!
我们假设读入的Excel文件为Class1.xlsx,储存在G:\路径下,该文件只有一个表格名为sheet1。我们使用import excel命令将该文件进行读入,程序如下:
clear
cd G:/
import excel using Class1.xlsx //using可以省略
browse
我们可以得到如下结果:
将数据导入到Stata后,往往需要对数据进行处理,我们可以在导入数据时,通过增加一些命令的方式来提高效率,我们接下来介绍import excel命令的几个附加选项。
根据上面的程序,在打开文件前我们使用clear命令来清空内存,并将默认文件地址改为我们导入文件所在的位置,我们在文件名前加上他的路径即可打开该文件,同时在文件名后加上选项clear即可实现清空内存中的数据,以Class1.xlsx为例,程序可简化为:
import excel G:/Class1.xlsx, clear //如果路径或文件名中有空格或特殊字符,可以将路径和文件名放在英文双引号中
list
Excel文件的第一行往往是表头,导入Excel文件时如果想将第一行当作变量名,在“,”后面加上firstrow即可,可将其缩写为first。
import excel G:/Class1.xlsx, first clear //first和clear不用考虑顺序先后
browse
{case()选项 }
我们发现,上图中的变量名为小写,若我们想把它们变为大写,可以使用case()选项,该选项括号中可以输入:preserve、lower、upper。其中,preserve为保持变量名的大小写原状,这是默认选项。lower是将变量名中的所有字母变成小写字母,upper是将变量名中的所有字母变成大写字母。我们以将变量名都变成大写字母为例,如下所示:
import excel G:/Class1.xlsx, clear first case(upper)
browse
我们上面导入的文件只有一个sheet,当文件中有两个sheet时,我们想要导入第二个文件时,我们以Class2.xlsx的Sheet2为例,程序如下:
import excel G:/Class2.xlsx, clear first case(upper) sheet("Sheet2") //括号中填入要打开的表格名称
browse
以上介绍了如何将单个表格进行读入,但当一个文件夹下有多个Excel单表时,我们该如何进行操作呢?如下,在““G:/excel读入”路径下有5个Excel单表,我们可以通过“循环”来进行,将每个表格读入到Stata中,并保存为dta格式的文件,我们下面将介绍两种方法。其中我们下面举例使用的Excel文件扩展名均为.xlsx,但Excel文件还有另一种扩展名为.xls,读入该文件时只需要把上述程序中对应.xlsx的部分修改为.xls即可!
(1)宏扩展函数
使用宏扩展函数,将Excel文件名放在局部宏中,然后进行循环,如下:
clear
cap mkdir G:/excel读入
cd G:/excel读入
local files : dir "." files "*.xlsx" //定义局部宏files为将当前工作路径下的所有.xlsx格式文件的文件名
foreach file in `files' { //对每一个文件名进行循环
import excel using `file', first case(upper) clear
local name=subinstr("`file'",".xlsx","",1) //使用subinstr函数,将每一个Excel文件名中的扩展名.xlsx替换为空,1表示前一个字符串.xlxs
save "`name'",replace //以原文件名保存dta格式
}
结果如下:每个Excel单表保存为一个dta格式的文件。
(2)fs命令
使用fs命令,可将文件名放在返回值r(files)中,使用方法与局部宏一样。与宏扩展函数相比,这里,我们不用再定义宏,可以直接调用该返回值进行循环,如下:
clear
cap mkdir G:/excel读入
cd G:/excel读入
ssc install fs //该命令为外部命令,初次使用可运行此命令进行安装。
fs *.xlsx //列出当前路径下面所有的xlsx文件的文件名
return list //可查看fs命令对应的返回值
如下:局部宏r(files)中存储了当前路径下的所有xls格式文件的文件名。
然后,调用返回值r(files)进行循环,如下:
foreach file in `r(files)' {
import excel using `file', first case(upper) clear
local name=subinstr("`file'",".xlsx","",1)
save "`name'",replace
}
结果与使用宏扩展函数相同。这样,一个循环就将文件夹下的所有Excel单表分别读入到Stata中了,接下来就可以根据自己的需要,在Stata中进行数据合并、处理等操作了!
小贴士:大家在公众号后台回复“Excel文件”可以获取文中的原文件哦~
腾讯课堂课程二维码
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
【基础篇】Python可变对象与不可变对象
Stata绘图系列——细节掌控绘图区域!
4月A股的收官战之概念板块哪家强?解放双手!你必须要会的两个命令—inlist & inlist2
【基础篇】字符串之判断方法
Stata绘图系列——让你的直方图随心所欲
【爬虫篇】湖人无缘季后赛,球迷如何回应
客官,要来份四象限图吗?
Python实现简繁体转换
Stata与Python交互方法及数据传递
“青铜”爬“王者”
留下想要的变量,你会几种方法?
【爬虫篇】基于selenium爬取美团评论
双标的莱万——足球无关政治?!
Stata处理重复值:duplicates
It's time to send a flower to your lover! 2021各省GDP新鲜出炉爬虫实战-采集全国各省疫情数据
log——为你的操作保驾护航
一行代码教你玩转emoji
票房遇冷的春节档口碑冠军丨《狙击手》影评分析
学习丰县,营造良好营商环境!
大国丢娃图:从川渝到徐州!
丰县“失火”,殃及徐州:股市超跌近30亿!
Unicode转义字符——编码与解码
徐州!徐州!
B站弹幕爬虫——冬奥顶流冰墩墩&雪容融
不会用Stata做描述性统计表?so easy!
丰沛之地:备足姨妈巾
过年啦,用Python绘制一幅属于你的春联吧!
登上爬虫俱乐部“时光机” |上“机”出发 开启一段奇妙之旅【基础篇】查找并输出子字符串的定位
Stata中的小清新命令——添加观测值
PCA(主成分分析法)降维——Python实现
超好用的事件研究法
关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。