查看原文
其他

用Stata读入同一路径下的多个Excel单表

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

本文作者:田志凡

本文编辑:张语盈

技术总编:高金凤

有问题,不要怕!访问 

http://www.wuhanstring.com/uploads/5_aboutus/爬虫俱乐部-用户问题登记表.docx (复制到浏览器中)下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~

爬虫俱乐部的github主站正式上线了!我们的网站地址是:https://stata-club.github.io,粉丝们可以通过该网站访问过去的推文哟~

爬虫俱乐部隆重推出数据定制及处理业务,您有任何网页数据获取及处理方面的难题,请发邮件至我们邮箱statatraining@163.com,届时会有俱乐部高级会员为您排忧解难!

往期推文《如何用Stata读入Excel单表文件》介绍了如何将Excel单表读入Stata中,但当一个文件夹下有多个Excel单表时,如下:在“d:/excel读入”路径下有5Excel单表,包含资产负债表、利润表、申万行业分类等,我们是不是重复多次读入单表的程序呢?

这一重复的手工劳动可用“循环”来代替。

解决思路:对该文件夹下的所有Excel文件的文件名进行循环,每循环一次,将一个Excel单表读入到Stata中,并保存为dta格式的文件。

那么,该如何获取Excel文件名呢?这里,我们可以使用两种方法:一是宏扩展函数,二是fs命令。

一、使用宏扩展函数,将Excel文件名放在局部宏中,然后进行循环,如下:

clearcap mkdir d:/excel读入cd d:/excel读入local files : dir "." files "*.xls" //定义局部宏files为将当前工作路径下的所有.xls格式文件的文件名,其中dir "."定位到缺省路径。foreach file in `files' { //对每一个文件名进行循环 import excel using `file', first case(lower) clear local name=subinstr("`file'",".xls","",1) //使用subinstr函数,将每一个Excel文件名中的扩展名.xls替换为空,1表示前一个字符串.xls save "`name'",replace //以原文件名保存dta格式}

结果如下:每个Excel单表保存为一个dta格式的文件。

二、使用fs命令。

使用fs命令,可将文件名放在返回值r(files)中,使用方法与局部宏一样。(关于返回值的介绍可看往期推文《朝花夕拾|stata返回值》)。与宏扩展函数相比,这里,我们不用再定义宏,可以直接调用该返回值进行循环,如下:

clearcap mkdir d:/excel读入cd d:/excel读入ssc install fs, replace //该命令为外部命令,初次使用可运行此命令进行安装。fs *.xls //列出当前路径下面所有的xls文件的文件名return list

使用return list可查看fs命令对应的返回值,如下:局部宏r(files)中存储了当前路径下的所有xls格式文件的文件名

然后,调用返回值r(files)进行循环,如下:

foreach file in `r(files)' { import excel using `file', first case(lower) clear local name=subinstr("`file'",".xls","",1) //使用subinstr函数,删除掉每一个Excel文件名中的扩展名.xls   save "`name'",replace  //以原名称保存dta格式的数据}

结果同使用宏扩展函数。

注意,上述举例使用的Excel文件扩展名均.xls,但Excel文件还有另一种扩展名为.xlsx,读入该文件时只需要把上述程序中对应.xls的部分修改为.xlsx即可! 

这样,一个循环就将文件夹下的所有Excel单表分别读入到Stata中了,接下来读者就可以根据自己的需要,在Stata中进行数据合并、处理等操作了!

爬虫俱乐部是您身边的科研助手,能够为您在数据处理实证研究中提供帮助。承蒙近四万粉丝的支持与厚爱,我们在腾讯课堂推出了网络视频课程,专注于数据整理、网络爬虫、循环命令编制和结果输出…李老师及团队精彩地讲解,深入浅出,注重案例与实战,让您更加快速高效地掌握Stata技巧及数据处理的精髓,而且可以无限次重复观看,在原有课程基础上已上传了全新的内容!百分百好评,简单易学,一个月让您从入门到精通。绝对物超所值!观看学习网址:

https://ke.qq.com/course/286526?tuin=1b60b462,

敬请关注!

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

往期推文推荐

关于我们

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

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

投稿邮箱:statatraining@163.com

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

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

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