分享

多个Excel文件处理——xls2dta命令

 张春强2022 2017-02-10

诸君安!


爬虫君之前给大家讲解过excel文件的读取与保存方法,详见如何用 Stata 批量读取多张工作表的 Excel 文件,其中介绍给大家的命令是import excel,该命令在读取单个文件时表现优异,但要读取多个文件就需要借助宏来进行循环。


今天爬虫君介绍给大家一个更简便的命令xls2dta,本命令需从ssc下载安装,在处理多个excel文件上具有显著优势,不仅可以读取保存,还可以进行合并等其他操作。

Excel文件批量读取与合并


比如,爬虫君现在有4excel文件放在E:/桌面/mark文件夹中。


每个文件都有3张表单,分别有idmark两个变量。


爬虫君想要将mark文件夹中所有excel文件中的第1和第3张表单中的数据转换成dta格式,并合并生成mark.dta文件。


方法一

使用命令:

xls2dta,save(E:\桌面) sheet(1 3):import excel using E:\桌面\mark,firstrow

xls2dta,save(E:\桌面\mark.dta, replace):append


save中参数表示新生成的文件所在路径,如果不使用该选项则默认为当前工作路径;


sheet中的参数表示所要读取的表单,如果要读取所有表单,则可使用allsheets选项;


E:\桌面\mark则是所要读取的文件的路径,命令会读取该路径中的所有xlsxlsx文件,如果要读取单个Excel文件则需加上扩展名。


第二行命令append默认使用第一行命令所转换生成的文件进行合并。

方法二

也可以不生成中间文件直接合并Excel文件中的数据,通过using来自定义所要使用的数据来源。使用命令:

xls2dta, sheet(1 3) save(E:\桌面\mark.dta, replace) importopts(firstrow):append using E:\桌面\mark

这样就直接读取并合并了Excel文件中指定的数据。


通过填写importopts选项可以在细节上完善Excel文件的读取,本次操作填入的firstrow表示将第一行变量记作变量名;


using后接路径,则会对该路径下所有的xlsxlsx文件文件进行操作。如果要对单个文件进行操作,则需加上扩展名。


比如读取mark2.xlsx文件中所有表单的数据并合并,生成文件mark2.dta,使用命令:

xls2dta, save(E:\桌面\mark2.dta,replace) allsheets importopts(firstrow): append using E:\桌面\mark\mark2.xlsx


同样的,append命令还可以换成joinbymergeexcel文件进行合并操作。


新生成文件的其它批量操作


除合并数据之外,xls2dta还可以对新生成的文件进行其他批量操作。语法为

xls2dta : xeq command


比如,对于新生成的文件,爬虫君想要把含4位数的变量id拆成两个分别含2位数的变量,使用命令:

xls2dta,save(E:\桌面) allsheets:import excel using E:\桌面\mark,firstrow

xls2dta : xeq nsplit id,digits(2 2)

如上图所示,变量拆分成功。


只需在xls2dta : xeq后加上命令即可对转换生成的文件进行批量操作,而不加usingsave,本命令会自行读取保存。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多