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

文摘   教育   2024-10-03 22:00   中国  

👇 连享会 · 推文导航 | www.lianxh.cn

🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)

 课程特色 · 2024机器学习与因果推断

  • 懂原理、会应用。本次课程邀请了两位老师合作讲授,目的在于最大限度地实现理论与应用的有机结合。为期四天的课程,分成两个部分:第一部分讲解常用的机器学习算法和适用条件,以及文本分析和大语言模型;第二部分通过精讲 4-6 篇发表于 Top 期刊的论文,帮助大家理解各类机器学习算法的应用场景,以及它们与传统因果推断方法的巧妙结合。
  • 以 Top 期刊论文为范例。目前多数人的困惑是不清楚如何将传统因果推断方法与机器学习结合起来。事实上,即便是 MIT 和 Harvard 的大牛们也都在「摸着石头过河」。为此,通过论文精讲和复现来学习这部分内容或许是目前最有效的方式了。张宏亮老师此前在浙江大学按照这一模式教授了「因果推断和机器学习」课程,效果甚佳:学生们能够逐渐建立起研究设计的理念,并在构造识别策略时适当地嵌入机器学习方法。


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

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


目录

  • 1. 调入 Stata 格式数据

    • 1.1 use 命令

    • 1.2 sysuse 命令

    • 1.3 webuse 命令

    • 1.4 bcuse 命令

    • 1.5 freduse 和 import fred 命令

    • 1.6 copy 命令

  • 2. 调入其他格式数据

    • 2.1 insheet 命令

    • 2.2 infile 命令

    • 2.3 infix 命令

    • 2.4 import 命令

    • 2.5 xls2dta 命令

  • 3. 相关推文



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/),所以我们可同时用 use  或 sysuse 直接调用。显然,由于使用 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

  • 专题:Stata入门
    • Stata小白系列之二:数据拆分与合并
    • Stata小白系列之一:调入数据
  • 专题:数据处理
    • Stata数据处理:import-fred-命令导入联邦储备经济数据库-FRED
    • multimport : 一次性导入并合并多个文件
  • 专题:Stata程序
    • Stata小白编程:暂元及macrolists命令
    • Stata小白编程:步步为营-以阶乘计算为例
  • 专题:工具软件
    • LaTeX小白入门:TeXLive安装及使用

🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)

尊敬的老师 / 亲爱的同学们:

连享会致力于不断优化和丰富课程内容,以确保每位学员都能获得最有价值的学习体验。为了更精准地满足您的学习需求,我们诚挚地邀请您参与到我们的课程规划中来。请您在下面的问卷中,分享您 感兴趣的学习主题或您希望深入了解的知识领域 。您的每一条建议都是我们宝贵的资源,将直接影响到我们课程的改进和创新。我们期待您的反馈,因为您的参与和支持是我们不断前进的动力。感谢您抽出宝贵时间,与我们共同塑造更加精彩的学习旅程!https://www.wjx.cn/vm/YgPfdsJ.aspx# 再次感谢大家宝贵的意见!

New! Stata 搜索神器:lianxh 和 songbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
  . ssc install lianxh
  . ssc install songbl
👉  使用:
  . lianxh DID 倍分法
  . songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。

连享会
连玉君老师团队分享,主页:lianxh.cn。白话计量,代码实操;学术路上,与君同行。
 最新文章