Stata数据处理:批量处理被保护的年鉴数据-dxls-txls

发布时间:2021-11-04 阅读 3940

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:王珞嘉 (厦门大学)
邮箱ljwang@stu.xmu.edu.cn


目录


1. 引言

统计年鉴是学术研究中最重要的数据来源之一。常用的数据收集方法有下载光盘版解压和知网下载。较之知网,光盘版的数据更完整,并且没有密码保护,允许直接编辑和导入 Stata。而知网使用文本识别进行数据整理,可能存在小数点变逗号等识别错误的情况。尽管光盘版准确性更高,但知网作为最便利的数据源,在无法找到光盘版数据时是我们的最优选择。

1.1 在知网下载统计年鉴

知网统计年鉴的下载路径为:中国知网首页  知识元检索  统计数据。

注:本文的操作实例来源为《中国能源统计年鉴2019》的表格「6-1 北京能源平衡表 (实物量)-2018」「6-2 天津能源平衡表 (实物量)-2018」

1.2 知网数据的文件保护

知网下载的 xls 数据有文件保护,会限制我们进行数据编辑和数据导入。当我们打开下载的 xls 格式统计数据进行编辑时,Excel 就会弹出无法编辑的提示。

当我们尝试通过命令将表格「6-1 北京能源平衡表 (实物量)-2018」导入 Stata 时, Stata 会提示无法导入。

. import excel using "2021_5_25 18_01_57_N2020120303000100.xls", firstrow clear
file 2021_5_25 18_01_57_N2020120303000100.xls could not be loaded
r(603);

此时,只需几个小技巧,我们就能快速将被保护的数据导入 Stata, 以便进行下一步的数据整理工作。

2. 导入被保护的数据

将被保护的数据导入 Stata 的方法有很多,本节将列举几种常见方法。

2.1 另存为 csv 格式

打开文件保护的 xls 格式数据,另存为 csv 格式。打开另存的 csv 格式数据会发现可以编辑和导入了。此方法的缺点是只能储存 sheet 1 中的数据 (另存为数据时会弹出如下提示框),对本文实例中的多工作表数据并不适用。

2.2 xlstocsv 命令

手动另存为费时费力,Stata 命令 xlstocsv 能够快速实现 xls/xlsx 至 csv 的批量转换。使用该方法,后续的数据整理工作需移至 csv 格式或 Stata 环境中进行。

xlstocsv 命令安装:

net install xlstocsv.pkg, from(https://gitee.com/kerrydu/clearpsdinexcel/raw/master) replace
help xlstocsv

当转换单个文件时,具体语法如下:

xlstocsv pathtoxlsx[pathtoxls] , [todir(pathforcsv) first]
  • pathtoxlsx[pathtoxls]:待转换的 xls/xlsx 文件的具体路径;
  • options 有以下设定:
    • todir(pathforcsv):指定存储 csv 文件的路径;如缺省,则在 path 的父路径中生成 CSV 文件夹;
    • first:只转换 xls/xlsx 文件中的第一个工作表。

当批量转换文件夹中全部文件时,使用下面的语法:

xlstocsv directory , [todir(pathforcsv) first]
  • directory:待转换 xls/xlsx 文件所在文件夹的具体路径;
  • options:与转换单个文件的语法一致。

此外,在命令窗口中输入 xlstocsv 可直接实现菜单式操作。如下图注释中操作,即可实现转换 (如操作中遇到困难,可参考后文中有关 dxls/txls 命令菜单栏操作的详细流程)。

2.3 VBA 宏代码

VBA 宏代码适用于较简单的密码破解。打开文件保护的 xls 格式数据,按住 Alt + F11 打开 VBA 操作窗口,依次选择插入  模块

通过百度等搜索引擎搜索 “VBA破解代码”,将代码完整复制到打开的模块窗口,按 F5 运行。

运行完成后,关闭 VBA 操作窗口,回到 Excel 界面,此时就可以对数据直接编辑和导入了。VBA宏代码的缺点是只能破解简单的密码,且每次只能完成单个数据文件的解除。

2.4 dxls 和 txls 命令

2.4.1 命令介绍

本文重点推介 dxlstxls 这两个导入密码保护文件的 Stata 外部命令。这些命令能够轻松完成对单个数据或文件夹内多个数据的处理,突破了 csv 方法和 VBA 宏方法的限制。dxlstxls 命令分别利用 VBA 宏和 VBS 的方法完成文件的导入,二者的主要区别如下:

  • dxls 命令处理后的文件将覆盖原文件,txls 命令处理后生成新文件;
  • dxls 命令处理的文件可以直接在 Excel 中编辑,txls 命令处理后新生成的文件不可以;
  • txls 命令可以完成 xlsx 格式和 xls 格式的相互转换;
  • txls 命令的运行速度更快。

二者均适用于知网数据的密码保护问题,读者可根据数据处理需求,择优选用。下面简单介绍这两个命令的安装和使用。打开 Stata ,在命令窗口输入以下命令并运行,即可完成 dxls 命令安装 (请保证安装时网络畅通)。

net install dxls.pkg, from(https://gitee.com/kerrydu/clearpsdinexcel/raw/master)

在命令窗口输入 dxls 并运行,在弹出的窗口中,按照下图所示选择需处理的文件 (或文件夹) ,点击 OK

完成处理后,Excel 工作界面会弹出如下对话框,点击确定并关闭 Excel (关闭时选择保存或不保存均可),重新打开原来被保护的数据,可以发现可以对数据进行编辑和导入等操作了。

注:选择批量处理文件夹时,有时需在弹出的 Excel 中启用编辑,Stata 才会继续处理。

txls 命令的安装和使用都与 dxls 命令类似。打开 Stata ,在命令窗口输入以下命令并运行,即可完成安装 (请保证安装时网络畅通)。

net install txls.pkg, from(https://gitee.com/kerrydu/clearpsdinexcel/raw/master)

在命令窗口输入 txls 并运行,在弹出的窗口中,按照下图所示选择需处理的文件 (或文件夹),点击 OK

运行完成后,在原文件 (或文件夹) 所在路径,会出现如下名为 xlsx 的新文件夹,点击进入该文件夹,就可以看到处理后新生成的数据。

复制新数据所在位置,并执行以下命令:

. import excel "C:\Users\WLJ\Downloads\xlsx\2021_5_25 18_01_57_N2020120303000100.xlsx", clear //双引号内替换为新文件的所在位置

可以看到,此时文件夹中的数据可以导入 Stata 了。除了菜单式操作,我们还可以通过代码实现文件保护的解除。dxlstxls 命令的基本语法与前文介绍的 xlstocsv 类似。

*转换单个文件
dxls pathtoxlsx[pathtoxls] 
txls pathtoxlsx[pathtoxls], [todir(pathforcsv) xls]

*转换整个文件夹
dxls directory 
txls directory, [todir(pathforcsv) xls]

2.4.2 具体实例

dxlstxls 命令的语法高度相似,本节仅演示 txls 命令。

我们需要事先从知网下载两个以上 xls 格式的数据文件,即「6-1 北京能源平衡表 (实物量)-2018」「6-2 天津能源平衡表 (实物量)-2018」,然后将两个文件放入名为 Energy 的文件夹。

首先,尝试单个文件的转换:

. txls "C:\Users\Downloads\Energy\2021_10_20 10_56_47_N2020120303000100.xls"

上述命令运行完毕后,我们在 Energy 文件夹中能够找到存放新数据的子文件夹 xlsx,此时可在 Stata 中顺利导入新数据:

. import excel "C:\Users\Downloads\Energy\xlsx\2021_10_20 10_56_47_N2020120303000100.xlsx", sheet("1-2")

现在,尝试文件夹内数据的批量转换:

. txls "C:\Users\Downloads\Energy"

上述命令产生的新数据仍然放在 Energy 下的子文件夹 xlsx 中 (如下图),此时文件夹中的全部数据都可在 Stata 中顺利导入。

还可以使用 todir 选项将新文件放入指定路径。运行如下代码将新生成文件放入指定路径中名为 helloworld 的文件夹中。

. txls "C:\Users\Downloads\Energy", todir("C:\Users\Downloads\helloworld")

3. 结语

本文介绍了解决知网统计数据密码保护的几种方法。更推荐使用 dxlstxls 命令,因为它们不但能够批量解除保护,还兼具方便的菜单式操作和简单的命令语法,是整理统计年鉴数据的 “神器”。

4. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 导入 导出 格式, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxhsongbl 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh