打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何用 Stata 批量读取多张工作表的 Excel 文件

文章来源:小花经济学术公众号  已获得授权

今天给大家推送一个很实用的技巧,用 Stata 批量读取多张工作表的 Excel 数据文件。

假设我们在名为 “Stata 读取多张表” 的文件夹下,有一个名为“stata.xlsx”的 Excel 数据文件。

假设我们有 N 个这样的 Excel 数据文件。像这样:

然后每一个 Excel 文件中有这样的表格:

每张表的 sheet 名称是不一样的,比如第一张叫:stata1;第二张叫 Stata_2;第三张表叫 stATA_+3。每一张表里面的范围也可能不尽相同。

怎么用 stata 批量读取呢?一般地,我们会用 import excel 命令读取 excel 文件,通过 help import excel, 我们可以看到它的基本用法:

 

1. Load an Excel file


clear

set more off

cd c:\users\admin\desktop\Stata读取多张表\

import excel using stata.xlsx

*读取 excel 文件,默认读取第一张表格,结果如下:

import excel age name using stata.xlsx ,clear

*读取 excel 文件,读取第一张表格中 age name 变量,结果如下:

import excel using stata.xlsx, sheet(stata1) firstrow clear

*读取 excel 文件,通过sheet 选项读取名为“stata1”的表格中,通过firstrow 选项把工作表中的第一行当成变量名读入。结果如下:

import excel using stata.xlsx, sheet(stata1) firstrow cellrange(A1:C5) clear

*读取excel文件,通过sheet选项读取名为“stata1”的表格中,通过firstrow选项把工作表中的第一行当成变量名读入,通过cellrange 选下把 A1:C5 范围的数据读入。结果如下:


2. Describe contents of an Excel file

 

import excel using stata.xlsx , describe

描述 Excel 文件的概况,比如:

我们可以看到,这个 Excel 文件有 3 张表格,还能看见它每张表格的数据范围。

我们在命令窗口输入:return list 。我们可以看到:

Excel 文件的每一张工作表的情况都被一一储存到 Macro 里了。这将是我们需要用到的原料。

面对繁琐重复的工作,我们首先应该想到的是能不能把这项工作程序化,让程序通过循环功能帮我们快速完成工作。

于是:

import excel using stata.xlsx, describe

forvalues s =1/`r(N_worksheet)' {

import excel using stata.xlsx, ///

sheet(`r(worksheet_`s')') ///

cellrange(`r(range_`s')') ///

firstrow clear

save newstata`s'.dta, replace

}

clear

forvaluess = 1/`r(N_worksheet)' {

append using newstata`s'.dta

}

save stata_all.dta,replace

我们可以看到 3 张表就合并过来了!

那么怎么把Stata读取多张表文件夹下的所有 Excel 都读进呢?有两种方法:

 

1. dir


*把所有文件夹下所有扩展名为 xlsx 的文件名存进 local files 里:

local files: dir '.' file '*.xlsx'

foreach file in `files'{

import excel using '`file'', describe

    forvalues s = 1/`r(N_worksheet)' {

            import excel using '`file'',   ///

            sheet(`r(worksheet_`s')')   ///

            cellrange(`r(range_`s')')    ///

            firstrow clear

            save newstata`s'.dta, replace

        }  

              clear

  forvalues s = 1/`r(N_worksheet)' {

           append using newstata`s'.dta                

        }

            save '`file'_all.dta',replace

    }  


 

2. fs 命令


ssc install fs

fs *.xlsx

我们可以看到,所有的扩展名为 xlsx的文件名都被保存进来了,那么我们写个循环把上面的处理单个 stata.xlsx 的循环嵌套进来:

fs *.xlsx 

foreach file in `r(files)' {

    import excel using '`file'', describe

    forvalues s = 1/`r(N_worksheet)' {

            import excel using '`file'',   ///

            sheet(`r(worksheet_`s')')   ///

            cellrange(`r(range_`s')')    ///

            firstrow clear

            save newstata`s'.dta, replace

        }  

              clear

  forvalues s = 1/`r(N_worksheet)' {

           append using newstata`s'.dta                

        }

            save '`file'_all.dta',replace

    }   

 



以上就是今天分享的推文内容了。此外,小编还要宣布一个好消息:

stata培训哪家强?的搜寻结果

1个回答-

提问时间:2017年1月2日

[最佳回答] 亲爱的stata爱好者,您好。

爬虫俱乐部是一个专注解决stata各种疑难杂症的公众号,深受大家喜爱。该公众号即将举办线下stata培训,技术大牛亲手教你stata,赶紧戳开独家Stata技术培训,千呼万唤始出来报名吧!

EmmaWatson   9999……999条好评



  

接下来报告空气质量

全国空气质量如下


也不说谁最差了

比抽SSR还难

都是难兄难弟,大家都保重


以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~,点赞打赏随您心意,么么哒~

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~


编辑 by梅洁瓷傲?



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
利用Python读取和修改Excel文件(包括xls文件和xlsx文件)
Python 操作Excel文件 (十五)
在 Node.js 中利用 js-xlsx 处理 Excel 文件
【Excel自动化办公】openpyxl如何实现Excel超链接批量化设置?
Python处理Excel效率高十倍(下篇)通篇硬干货,再也不用加班啦
Python提升Excel效率的5个方法!(实例演示)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服