Stata小白系列之一:调入数据

发布时间:2021-09-12 阅读 527

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

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

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

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

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

⛳ Stata 系列推文:

作者:谢作翰 | 连玉君 | (知乎 | 简书 | 码云)

编者按:从本期开始,Stata 连享会将推出「Stata 小白系列」推文,介绍数据导入、命令语法等 Stata 入门知识,以帮助各位尽快掌握 Stata 的基本操作。需要注意的是,本文所有数据可通过 lxhget xzhstata.pkg, replace 命令获取。


目录


1. 调入 Stata 格式数据

1.1 use 命令

use [varlist] [if] [in] using filename [, clear nolabel]

其中,

  • use:是打开数据的命令语句;
  • varlist:代表变量名称;
  • if:是条件语句,用于限定样本范围;
  • in:是范围语句,很少用;
  • using filename:指定数据文件路径和名称。

具体来看,如果想要调入文件中全部数据,输入标准命令如下:

. use "D:\连享会\useauto.dta", clear //为了演示方便,我们将 auto 数据存放在本地

说明:use 是表示调入的命令语句,D:\连享会\auto.dta 则指定了数据文件的路径和名称。

有时,并不需要将数据文件中的所有变量全部调入,因为原始数据内容丰富,含有很多变量,而研究可能只涉及其中的几个变量。例如,我们只关心 auto 数据集中的 makeprice 这两个变量,应该使用如下命令:

. use make price using "D:\连享会\useauto.dta", clear

这个命令中 use make price 部分表示需要打开 makeprice 两个变量,using "D:\连享会\auto.dta" 部分表示打开的数据文件路径和名称。

有时,原始数据将不同特征的样本混杂在一起,而现实的研究却要求将不同的样本分开研究,例如分别研究男性、女性的情况,城市、农村的经济问题,等等。这时就需要只调入具有这些特征的样本数据进行分析。在本例中,调入 auto 文件中进口车样本数据的命令为:

. use "D:\连享会\useauto.dta" if foreign == 1, clear

说明:这个命令语句中最重要的就是 if 语句,该命令执行的结果就是让 Stata 仅仅读入符合条件的样本数据。在本例中, foreign == 1 就表示是进口车,故调入的数据是进口车的数据。

有时,原始数据文件的样本数量过于庞大,例如人口普查的数据动辄千百万,可是一般的研究大部分不需要全部的样本,只需要部分样本即可。例如,若只需要调入 auto 数据文件中第 5 到第 10 个样本的数据,可以使用如下命令:

. use "D:\连享会\useauto.dta" in 5/10, clear

说明:in 5/10 表示选取的样本序号,即选取第 5-10 行观察值。

1.2 sysuse 命令

安装 Stata 时,会自带一些供练习所用的范例数据集。在命令窗口中输入命令 help dta_examples,可以查看完整的数据列表。

auto.dta            use | describe
auto2.dta           use | describe
autornd.dta         use | describe
bplong.dta          use | describe
bpwide.dta          use | describe
cancer.dta          use | describe
census.dta          use | describe
citytemp.dta        use | describe
citytemp4.dta       use | describe
educ99gdp.dta       use | describe
gnp96.dta           use | describe
lifeexp.dta         use | describe
network1.dta        use | describe
network1a.dta       use | describe
nlsw88.dta          use | describe
nlswide1.dta        use | describe
pop2000.dta         use | describe
sandstone.dta       use | describe
sp500.dta           use | describe
surface.dta         use | describe
tsline1.dta         use | describe
tsline2.dta         use | describe
uslifeexp.dta       use | describe
uslifeexp2.dta      use | describe
voter.dta           use | describe
xtline1.dta         use | describe

Stata 内置有以上数据集,在练习命令时我们不必舍近求远。例如,auto 数据集大名鼎鼎,笔者在不少教程中见过。由于 auto 数据库同时备份在根目录下 (D:\stata15\ado\base/a/),所以我们可同时用 usesysuse 直接调用。显然,由于使用 use 需指定文件路径,较为繁琐,我们通常都是直接使用 sysuse 命令调入这些内置的数据文件。以 cancer 数据集为例,若想使用 use 命令调用,则需指定具体的存储路径:

. use "D:\stata15\ado\base/c/cancer.dta", clear

相比之下,若用 sysuse 命令,则可以直接调入:

. sysuse cancer.dta, clear

1.3 webuse 命令

Stata 手册里使用的数据都可以使用 webuse 命令直接下载使用。在命令窗口输入 help dta_manuals,可以查看数据集列表信息。

如图所示,以上手册简单直译了一下,读者可以自取所需,点击进入后会有命令介绍与配套数据库。上述手册配套的所有数据库都可以用 webuse 直接调入。webuse 的特点是可以直接在线导入网上数据而不需指定具体网络路径,因为 web set 已经默认设定了网络地址为 Stata 官网的手册地址。例如,以下两条命令语句等价:

. use http://www.stata-press.com/data/r15/lifeexp, clear
. webuse lifeexp, clear

输入 webuse query 命令,我们可以看到当前默认设定的网址:

. webuse query
(prefix now "http://www.stata-press.com/data/r15")

使用 webuse set 可以更改默认地址,以便下载特定网址中的 Stata 数据文件。若需恢复默认网址设定,只需执行 webuse set,后面不加网络路径。

1.4 bcuse 命令

bcuse 由波士顿大学 Baum 教授编写,提供了波士顿学院 Economics 实验室中使用的许多 Stata 格式数据集。具体包括 Wooldridge 导论,Greene 的计量分析等经典教科书范例数据。我们可以使用 ssc install bcuse, replace 命令下载并安装该命令。以伍德里奇《导论》中的数据集为例,我们输入如下命令,打开 bcuse 的帮助文件,可以看到该命令能够下载的所有数据集的列表链接地址:

. help bcuse

亦可在命令窗口中直接输入如下命令打开网页:

. view browse "http://fmwww.bc.edu/ec-p/data/wooldridge/datasets.list.html"

截取部分网页信息如下:

如果有些命令是以 zip 保存的,只需在文件名后面加上 .zip 即可,如 bcuse 401k.zip

1.5 freduse 和 import fred 命令

fed 是由圣路易斯联邦储备银行 (Federal Reserve Bank of st . Louis) 维护的联邦储备经济数据库 (FRED)。该数据库提供了数十万个时间序列资料,用以衡量经济和社会活动的方方面面。在 Stata14 使用的命令为 freduse ,需要先用 ssc install freduse, replace 命令下载。Stata 15 中提供了 import fred 命令用于快捷地导入 fred 上存储的数据。更多详细信息,请参考详「链接1」「链接2」

1.6 copy 命令

copy filename1 filename2 [, options]

filename1 是要复制的来源文件地址, filename2 是存放的新文件地址,可以是一个附带路径的本地文件名也可以是一个网络链接地址。当文件路劲比较复杂,比如含空格时要用双引号将两个路径包围。

options 功能
public 定了 filename2 对所有用户可读,否则根据系统默认
text 将文件保存为 txt 格式
replace 若 filename2 的文件已存在,则替换它

copy 命令的作用包括:

  • 文件搬家:就是将硬盘上的一个文件搬到另一个地方。此时两个文件名都为本地路径文件,还可对文件改名;
  • 下载网上的文件,比如一些论文、上市公司年报、数据等,只要知道他们的 url 就能用 copy 获取。以 copy 为基础有更高级的命令,如 cntrade 命令就是用 copy 直接读取网易财经的股价历史数据。

2. 调入其他格式数据

当数据文件为其他格式时,也可以导入 Stata 软件中进行处理,常用的命令主要有 insheetinfileinfix 、以及 import 等命令。

2.1 insheet 命令

insheet [varlist] using filename [, options]

其中,insheet 代表导入数据的命令,[varlsit] using filename 代表数据文件中的某个变量,options 选项的具体内容如下:

  • [no]double:设置变量存储类型;
  • tab:设置制表符为数值变量的分隔符;
  • comma:设置逗号为数值变量的分隔符;
  • delimiter("char"):设置自定义的 “char” 为数值变量的分隔符;
  • clear:清空内存;
  • [no]names:设置文件中的第一行为变量名称。

例如,将数据 citywater.csv 导入 Stata 中,我们就不能直接使用 use 命令了,因为此数据文件的后缀名不是 .dta,而是 .csv,这种数据类型表示使用逗号分隔的一种数据类型。

. insheet using "D:\连享会\citywater.csv", clear

insheet 是导入此类数据的命令,using "D:\连享会\citywater.csv" 指明了数据的路径,此时数据文件 citywater.csv 就被正确导入 Stata 中,可以进行各种操作了。

2.2 infile 命令

infile 在某种程度上可以完成与 insheet 命令相同的功能,最大区别是 infile 必须指明变量名称,尤其是字符型变量。infile 命令读取数据的基本命令语句如下:

infile varlist [_skip[(#)] [varlist [_skip[(#)] ...]]] using filename
      [if] [in] [, options]

同样将数据 citywater.csv 导入 Stata 中,infile 命令为:

. infile year production capital labor using "D:\连享会\citywater.csv", clear

2.3 infix 命令

固定格式的数据是指有固定的位数,当位数不够时,前面用 0 补齐,对于这种数据是用 infix 命令读入的。

infix using dfilename [if] [in] [, using(filename2) clear]
infix specifications using filename [if] [in] [, clear]

例如,将左侧数据 (数据文件 chengji.csv) 转化成右侧所示的数据形式。chengji 这组数据为用逗号隔开的数据类型。其中 gender 只有 0 和 1 两个数字组成,number 这一栏必须由三位数组成,mathenglish 的成绩必须由两位数组成,所以这是一个固定格式的数据,应该使用 infix 命令。

. infix gender 1 number 3-5 math 7-8 english 10-11 using "D:\连享会\chengji.csv", clear

在这个命令语句中,infix gender 1 说明第一位数据为性别,number 3-5 表示第 3 至 5 位表示学号,math 7-8 表示第 7 至 8 位表示数学成绩,english 10-11 表示第 10 至 11 为表示英语成绩,using C:\data\chengji.csv 表示原始数据文件的路径。

2.4 import 命令

读取 Excel 数据有两种选择,一种是利用鼠标点击菜单,这种方式简单,无法对文件做精细设置。另一种是利用 Stata 官方命令 import excel

import excel [using] filename [, import_excel_options]

其中,options 选项如下:

  • sheet("sheetname"):选择要导入的表名;
  • cellrange([start][:end]):选择数据的起始和结束位置;
  • firstrow:将第一行作为变量名。

import excel 对应的导出命令为 export excel,详情请参考 help export excel

以 stata 附带的 auto.dta 数据为例 (为演示方便已将其导出为 Excel)。首先我们导入数据,将第一行设置为变量名,选取数据范围为 (A1,D10),命令如下:

. use auto.dta, clear
. export excel using auto.xls, firstrow(var) replace 
. import excel auto.xls, cellrange(A1:D10) firstrow clear

需要说明是,此处若不附加 cellrange(A1:D10) 选项,则默认将整份 Excel 表格一次性导入 Stata 中。

2.5 xls2dta 命令

上文介绍的 import excel 命令一般用于导入单个 excel 文件。当需读取多个 excel 文件时,大家可以使用 xls2dta 命令。该命令在处理多个 excel 文件上具有显著优势,不仅可以读取保存,还可以进行合并等其他操作。由于篇幅限制,不再为大家介绍,有兴趣同学可以自行学习。

3. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 小白 import, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

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

课程主页

课程主页

关于我们

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

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

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

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

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