D1. 数据的导入与导出

整理人:冷萱 (西南财经大学)
邮箱:

本讲主要介绍数据在 Stata 中的导入与导出,具体包括 3 个部分:简介;Excel 数据导入;将 Stata 数据导出为 Excel 数据。

1.简介

一般情况我们拿到的数据为两种类型:(a) Excel 格式; (b) 文本文档。 Excel 格式又区分成 Excel 2003 的格式 (.xls) 与 Excel 2007&2010 (.xlsx)。我们需要把这些数据格式转换为 Stata 专属的格式 (.dta) 才能进行统计和回归分析。

针对两种不同的情况,使用的命令也有所差别,Excel 格式导入时使用的命令是 import,对于文本文档使用的是 insheet 或者 infileinsheet 对应的文本文件是用 Tab 键来分割的,而 infile 对应的文本文件是用逗号或者空格来分隔两列的。本讲主要介绍第一种类型,即用 Excel 来存储的数据。

这里先对 Excel 进行简要说明:

  • 对于 Office 2003 定义的 Excel 在存储上有一个很大的限制,最大行数是 65536 行,最大列数是 256 列,单元格存储最大的字符数是 255 个,所以有时候可能不能满足需要。
  • 相对而言,采用 Office 2007 及以上版本,要求就会更加宽松一些,上限为 1048576 行,16384 列,文字变量 32767 个字符。

实际上 txt 文档更为灵活,因为它没有上述单元格行数列数以及文字字符的要求,而且 txt 文档没有专属的格式,不容易损坏。一些重要的资料还是建议大家备份一份存储为文本文档。

有时候还需要使用其他的一些软件比如 Eviews、SAS、R 等的数据格式导入 Stata 中,这些软件想要转化成 Stata 格式 (.dta) 有两种途径:

  • 第一种方式可以用 Excel 或 txt 文档作为中介进行转换
  • 第二种方式可以用 Stat-Transfer 软件进行转换,该软件可以实现在几十种软件之间进行数据格式的转换。

2. Excel 数据的导入

把 Excel 数据转换成 Stata 格式,可以使用 import excel 命令 (help import excel, [D] import excel)。打开的 Excel 文档界面如下所示,第一行是变量名称。

图1:Excel数据导入1

如何将上述 Excel 文档快速导入 Stata 中呢?可以使用 import excel 命令。语法格式如下:

具体应用法如下:

import excel auto.xls, firstrow sheet(Sheet1) clear

*-Note: 
* (1) firstrow 表示把 Excel 的第一行视为变量名称
*
* (2) sheet()  中填入 Excel 中的 sheet 名称
*     若导入第一个 sheet 可以不附加此选项
*
* (3) Excel2003 文件后缀为 .xls, 
*     Excel2007 文件后缀为 .xlsx

具体而言,import excel 是导入 Excel 文档的固定命令格式,在 import excel 后面跟上接 Excel 文档的名称和后缀,Office 2003 的格式后缀 .xls,如果是 2007 的格式后缀要写 .xlsx 。此外,后面还有两个选项,第一个选项是 firstrow,表明了在导入 Excel 时把第一行数据当做变量的名称,第二个选项是 sheet,需要指定将 Excel 中哪个工作表导入到 Stata 中。最后一个 clear 的作用是把当前 Stata 内存清空,然后再导入 Excel 中的数据。导入 Stata 后,可在 Stata 命令框输入 browse 查看导入后的数据。如下图所示:

图2:Excel数据导入2

可以看到第一行就是变量的名称,对应上面 Excel 的第一行。数据框中有黑色的数字,也有红色的字符。对于红色的字符(文字类型)的变量一般需要做进一步处理。需要转化为Stata能够识别的变量。转化命令为encode,具体如下:

encode Cartype, gen(Cartype2) label(foreign)

encode后面跟上想要转换的变量名,此处为 Cartype,随后的 gen (Cartype2) 是转换后新生成的变量,label (foreign) 是为新生成的变量加上标签。转化完成后会产生一个新变量,即 Cartype2,为蓝色,表面上它显示一个文字信息,实际上它对应一个数字,Stata 会自动进行编码。最后存储为 Stata 格式,并保存在 Stata 左下角显示的路径下。 Stata 数据保存命令为 save,命令如下:

save "myauto.dta", replace

* myauto 是保存的数据名称
* replace 是指替换路径下已有的 myauto.dta 文件

3. 如何导出为 Excel 数据

使用的命令为 export,其他的写法与 import 非常相似。需要注意的是,在设定选项 firstrow() 时,有两个填项:

  • 若设定 firstrow(variables),导出时首行为变量名;
  • 若设定 firstrow(varlabels),导出时首行为变量标签。
sysuse "auto.dta", clear

export excel auto, firstrow(variables) replace  //首行为变量名称

export excel auto, firstrow(varlabels) replace  //首行为变量标签

除了以上介绍的命令,Stata 还有许多命令可以进行数据格式的转换。可以看以下的帮助文件。

help insheet  //导入 -tab- 分隔的数据
help infile   //导入  逗号 分隔的数据 
help usespss  //将 SPSS 格式的数据导入 Stata
help fdasave  //Save and use datasets in FDA (SAS XPORT) format
help usesas   //将 SAS 格式的数据导入 Stata

4. 扩展阅读