作者:李刚 (中南财经政法大学)
邮箱:gang.li.0814@gmail.com

Stata连享会   计量专题 || 精品课程 || 简书推文 || 公众号合集

连享会计量方法专题……

1. 应用背景

数据处理过程中,通常面临数据集格式转换的难题,相比 Stata 的 .dta 数据文件,使用更广泛的是 Excel 数据。那么如何将 .dta 数据转换成以 .xls.xlsx 后缀的 Excel 数据呢?

本文介绍的 export excel 命令便是主要解决此问题。下面将围绕用法应用案例两方面展开,主要介绍命令的使用。

若采用窗口操作,相应的流程为:File → Export → Data to Excel spreadsheet(_.xls; _.xlsx)

2. 用法介绍

下面,我们分两个小节,分别介绍 export excel 的基本语法和各个选项。

2.1 基本语法

export excel 的基本语法如下:

export excel [using] filename [if] [in][, export_excel_options]

  • 其中,export excel 为命令主体,不可省略;
  • using 为指定使用的文件,导出整个数据集时可省略;
  • filename 为导出的 Excel 文件名;
  • ifin 可限定要导出的数据的范围;
  • export_excel_options 为在基础命令上添加的选项,详细介绍见 2.2 小节。

若只需导出部分变量名,则可在excel export 后面添加相应的变量名,需要注意,此时的 using 不可省略,对应的语法如下:

export excel [varlist] using filename [if] [in][, export_excel_options]

2.2 选项介绍

export excel 包含了丰富的选项,下面从主要选项 (Main Options) 和其他选项 (Advanced Options) 两方面进行介绍,并重点选取数据处理常用的进行详细说明。

主要选项 (Main Options)

选项 用途
replace 覆盖已有文件
firstrow(variables or varlabels) 设置导出数据第一行为变量名还是变量标签
sheet("sheetname") 指定 sheetname
cell(start) start (upper-left) 开始写入数据
sheetmodify 不修改导出范围之外的数据,不能和 sheetreplace replace 选项连用
sheetreplace 导出之前先将 sheet 数据清除 ,不能和 sheetreplace replace 选项连用
nolabel 导出变量值,而不是变量的值标签
keepcellfmt 保留已有表格的单元格格式

值得说明的是:常用的是 sheet("sheetname") firstrow(variables|varlabels) replace 选项。

  • sheet() 选项可以指定导出到 Excel 时数据的 sheet 名称,可是实现按需求修改 sheet 名的功能,套用在循环中使用比较方便,可以参见下文 3.1 小节 Task2 中的用法。
  • firstrow(variables|varlabels)选项可以指定导出到 Excel 时表头为变量名还是变量标签,当不添加 firstrow 选项时,默认时导出数据,不包含变量名
  • replace 选项如同其他命令中的用法,覆盖已有数据,一般必选,否则报错 file already exists但当使用sheet() 选项时repalce 可以省略,表示在一份 Excel 表格中写入多张 sheet **。

下面为大家演示 sheet("sheetname")firstrow(variables|varlabels) 的使用效果,注意仔细观察导出的 Excel 文件 sheet 名表头 的区别。

sysuse auto, clear* 设定 Excel 文件的子表 (Sheet) 名
export excel using "auto.xls", replace sheet("auto")//结果:注意观察 Excel 文件的 Sheet 名* 导出Excel的表头为变量名
preservekeep make price mpg rep78export excel using "auto_varname.xls", firstrow(variable) replace
restore/*结果:auto_varname.xls 的前三行
make        price   mpg rep78
AMC Concord 4,099   22  3
AMC Pacer   4,749   17  3
*/*设定导出Excel的表头为变量名
preservekeep make price mpg rep78export excel using "auto_varlabel.xls", firstrow(varlabel) replace
restore/*结果:auto_varlabel.xls 的前三行
Make and Model  Price   Mileage (mpg)   Repair Record 1978
AMC Concord 4,099   22          3
AMC Pacer   4,749   17          3
*/

其他选项 (Advanced Options)

选项 用途
datestring(datetime_format) 将时间格式数据导出为字符型
missing(repval) 将缺失值导出为指定的缺失值标记(repval),字符型或数值型均可,
如无此选项,默认导出为空格
locale(locale) 当使用扩展的 ASCII 字符集可能需要此选项。默认的环境为 UTF-8

连享会计量方法专题……

3. 应用案例

3.1 案例一

按照 rep78 变量(汽车 1978 年维修次数) 将 auto.dta 拆分成 Excel 格式的子集 。

  • Task1: 按照 auto_rep78_i_.xls 命名文件,其中 i 表示相应维修次数;
  • Task2: 生成 auto_rep78_all.xls数据集,其中一个 Sheet 对应一个子集。

提示:解决这两个问题的关键在于 2.2 部分重点介绍的 sheet("sheetname")firstrow(variables|varlabels) 两个选项的使用。

sysuse auto, cleartabulate rep78  //列表呈现 rep78 的类别和频数分布levelsof rep78,local(rep)
foreach i in `rep'{preservekeep if rep78 == `i'export excel using "auto_rep78_`i'.xls", firstrow(variable) replaceexport excel using "auto_rep78_all.xls", firstrow(variable) sheet(`i')restore}

3.2 案例二

使用 export excel 导出 nlsw88.dta数据集的 变量名变量标签 ,存在namevarlabel两列,文件名为 nlsw88_varname_varlab.xls

处理思路: 导入 nlsw88.dta 数据 --> 使用 firstrow(variable) 选项获取变量名 (Data1) --> 使用 firstrow(varlabel) 选项获取变量标签(Data2) --> 合并 Data1Data2 --> 由行转置为列 。

sysuse nlsw88, clear*获取变量名
preserveexport excel using "nlsw88_varname.xls" in 1,firstrow(variable) replaceimport excel using  "nlsw88_varname.xls", clearkeep in 1save "nlsw88_varname.dta", replace
restore*获取变量标签
export excel using "nlsw88_varlab.xls" in 1, firstrow(varlabels) replace
import excel using  "nlsw88_varlab.xls", clear
keep in 1
save "nlsw88_varlab.dta", replace*合并、转置
use "nlsw88_varname.dta", clear
append using "nlsw88_varlab.dta"
sxpose, clear
rename _var1 varname
rename _var2 varlabel
list varname  varlab, noobs
export excel using "nlsw88_varname_varlab.xls",firstrow(variable) replace/*+-----------------------------------------+|       varname                  varlabel ||-----------------------------------------||        idcode                    NLS id ||           age       age in current year ||          race                      race ||       married                   married || never_married             never married ||-----------------------------------------||         grade   current grade completed ||      collgrad          college graduate ||         south            lives in south ||          smsa             lives in SMSA ||        c_city     lives in central city ||-----------------------------------------||      industry                  industry ||    occupation                occupation ||         union              union worker ||          wage               hourly wage ||         hours        usual hours worked ||-----------------------------------------||       ttl_exp     total work experience ||        tenure        job tenure (years) |+-----------------------------------------+
*/

小彩蛋:describe, replace 命令可以快速实现上述需求,将数据集的 position, name, type, isnumeric, format, vallab, varlab 导出到一个新的数据集。

sysuse nlsw88, clear
describe, replace
describe
list name varlab, noobs
keep name varlab
export excel using "nlsw88_varname_varlab.xls",firstrow(variable) replace

连享会计量方法专题……

4. 附:文中所有代码

* ##2.2 介绍 firstrow 和 sheet 的使用
sysuse auto, clear
*设定Excel文件的Sheet名
export excel using “auto.xls", replace sheet("auto")*导出Excel的表头为变量名
preservekeep make price mpg rep78export excel using "auto_varname.xls", firstrow(variable) replace
restore*设定导出Excel的表头为变量名
preservekeep make price mpg rep78export excel using "auto_varlabel.xls", firstrow(varlabel) replace
restore* ## 3.1 案例一
sysuse auto, clear
levelsof rep78,local(rep)
foreach i in `rep'{preservekeep if rep78 == `i'export excel using "auto_rep78_`i'.xls", firstrow(variable) replaceexport excel using "auto_rep78.xls", firstrow(variable) sheet(`i')restore}* ## 3.2 案例二
sysuse nlsw88, clear*获取变量名
preserveexport excel using "nlsw88_varname.xls" in 1,firstrow(variable) replaceimport excel using  "nlsw88_varname.xls",clearkeep in 1save "nlsw88_varname.dta", replace
restore*获取变量标签
export excel using "nlsw88_varlab.xls" in 1, firstrow(varlabels) replace
import excel using  "nlsw88_varlab.xls",clear
keep in 1
save "nlsw88_varlab.dta", replace*合并、转置
use "nlsw88_varname.dta", clear
append using "nlsw88_varlab.dta"
sxpose, clear
rename _var1 varname
rename _var2 varlabel
list varname  varlab, noobs
export excel using "nlsw88_varname_varlab.xls",firstrow(variable) replace

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 欢迎赐稿: 欢迎赐稿至StataChina@163.com。录用稿件达 三篇 以上,即可 免费 获得一期 Stata 现场培训资格。
  • 往期精彩推文:
    Stata绘图 | 时间序列+面板数据 | Stata资源 | 数据处理+程序 | 回归分析-交乘项-内生性

Stata 转 Excel —— export excel 命令详解相关推荐

  1. Stata结果输出:outreg2命令详解

    全文阅读:https://www.lianxh.cn/news/d94726e200a8e.html 目录 1. 引言 2. 描述性分析 2.1 全部变量一般统计指标 2.2 部分变量一般统计指标输出 ...

  2. Excel导出带图片详解

    Excel导出带图片详解 导出模板 一.引入的jar <dependency><groupId>org.apache.poi</groupId><artifa ...

  3. python可以处理多大的数据_科多大数据之Python基础教程之Excel处理库openpyxl详解...

    原标题:科多大数据之Python基础教程之Excel处理库openpyxl详解 科多大数据小课堂来啦~Python基础教程之Excel处理库openpyxl详解 openpyxl是一个第三方库,可以处 ...

  4. 用计算机函数查找,Excel查找函数Vlookup详解及应用示例-excel技巧-电脑技巧收藏家...

    Excel查找函数Vlookup详解及应用示例 招如其名.此招用来在一个茫茫的数据源中,自动让电脑找出你要的某个数据的相关资料并填在指定的地方.也是就是,可以让电脑在一个表格或指定的一个区域中查找某一 ...

  5. python的excell库_扣丁学堂Python基础教程之Excel处理库openpyxl详解

    扣丁学堂Python基础教程之Excel处理库openpyxl详解 2018-05-04 09:49:49 3197浏览 openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pipi ...

  6. 如何使用计算机Excel公式if,Excel条件函数If详解及应用示例-excel技巧-电脑技巧收藏家...

    Excel条件函数If详解及应用示例 此招用来对某一条件执行的真假值进行判断,根据逻辑计算的真假值,返回不同结果.如果结果为真,则返回一个真,如果为假,则返回另一值,可谓左右逢源. 使用语法 IF(l ...

  7. Linux性能观测——dstat命令详解

    dstat dstat 用来替换vmstat.iostat.netstat.nfsstat和ifstat这些命令的工具,可以说是一个全能的系统信息统计工具. 相关命令 Linux存储性能观测--ios ...

  8. Linux常用命令详解(转)

    Linux常用命令详解(转) Linux之所以受到广大计算机爱好者的喜爱,主要原因有两个,首先它是自由软件,用户不用支付费用就可以使用它,并可根据自己的需要对它进行修改.另外,它具有Unix的全部功能 ...

  9. docker常用命令详解

    docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...

  10. linux yum命令详解

    yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RP ...

最新文章

  1. 为什么回归测试在增量开发中特别重要?
  2. JAVA命令行编译及运行
  3. 中山大学2016年硕士研究生入学考试复试基本分数线
  4. 205. jetcache:你需要知道的小技巧
  5. xhprof windows下安装和使用(windows版本)
  6. Lingo优化模型概述
  7. c 中=和==的区别有哪些?
  8. Python web开发——自定义userprofile(用户描述)
  9. 常用电源芯片特性大集合
  10. SpringBoot集成Kafka集群并实现接收_发送消息操作_以及常见错误_亲测---Kafka工作笔记005
  11. ListView+CheckBox两种解决方式及原因分析
  12. 初探Java8中的HashMap(转)
  13. 漫谈 Clustering (追忆篇): Regularized GMM
  14. mysql select trim_mysql trim函数用法举例
  15. 计算机组成原理 透明性,计算机组成原理试题
  16. SpringBoot图片上传报错:The field headImg exceeds its maximum permitted size of 1048576 bytes.
  17. 华为网络设备-FTP文件传输
  18. python 相对导入与绝对导入
  19. ECCV2018论文,以及相关比赛地址
  20. 【论文笔记】Encoding cloth manipulations using a graph of states and transitions

热门文章

  1. 射频器件在电路中的分类
  2. 千千万万的IT开发工程师路在何方?[出处:天涯虚拟社区]
  3. fire.fire_如何将第三方控制器与Fire TV和Fire TV Stick配对
  4. 一度智信|拼多多优惠券怎么取消
  5. 让Windows XP自动登录的三种方法
  6. [ctf misc][wp]一些内存取证的wp(含[2021蓝帽杯北部赛区分区赛]博人的文件)
  7. 【精读AI论文】dropout----(Improving neural networks by preventing co-adaptation of feature detectors)
  8. 【计算机系统】如何在阿里云ECS服务器上定时执行Python脚本?
  9. Delphi中的编译期函数Dec,Inc,Odd,Pred,Succ,Ord,Chr,Low,High,Sizeof【转】
  10. python自动刷新12306抢票