美文网首页stata连享会
stata小白之三:数据拆分与合并

stata小白之三:数据拆分与合并

作者: 谢作翰 | 来源:发表于2017-12-24 16:16 被阅读9315次

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

编者按: 从本期开始,Stata 连享会将推出「Stata小白系列」推文,介绍数据导入、命令语法等 Stata 入门知识,以帮助各位尽快掌握 Stata 的基本操作。


目录
一 数据调入

0 概念区分

  1. 调入本地标准文件
  • 调入全部数据
  • 调入部分变量
  • 调入部分样本
  • 调入具有某些特征的样本
  1. 调入网络文件
  • 调用 stata 自带数据库——sysuse命令
  • 调入stata 手册在线数据 —— webuse set命令
  • Wooldridge, Greene 等经典教科书范例数据获取——bcuse命令
  • 调用联邦储备经济数据库 (FRED)——freduse&import fred
  1. 大杀器copy命令——从下载地址直接储存文件或复制网页文本信息
  2. 调入ASCII数据
  • 读取ASCII数据 —— insheet命令
  • 读取无固定格式命令 —— infile命令
  • 读取固定格式数据—— infix
  1. 调入excel数据——import excel &xls2dta

二 数据标签与排序

  1. 数据标签
  • 为数据库添加标签
  • 为变量添加标签
  • 为数值添加标签
  1. 数据排序—— sort& gsort

三 数据拆分与合并

  • 数据拆分

    1. 数据横向拆分—— keep& drop
    2. 数据纵向拆分—— keep& drop
    3. 一步到位保存数据子集—— savesome
  • 数据合并

    1. 数据的横向合并—— merge
    2. 数据的纵向合并—— append
    3. 对多个 csv文件纵向合并—— csvconvert

四 长宽数据转换—— reshape命令

  • 宽数据转为长数据
  • 长数据转为宽数据

数据文件:链接: https://pan.baidu.com/s/1qXRh9EG 密码: 5ltw


数据拆分

  1. 数据的横向拆分
    原始数据有时包含过多的变量,但在实际应用中可能根据需要将原始数据拆分为不同的数据表,这时就要实现数据的横向拆分。数据的横向拆分用到的两个命令为 dropkeep, drop命令是用来删除某些变量和观测值的,基本命令如下:
drop varlist [if] [in]

keep命令是用来保留某些变量和观测值的,基本命令如下:

 keep varlist [if] [in]

举例说明water数据文件包含四个变量,分别是 year, capitalproductionlabor,将 water数据文件拆分为两个数据文件,一个数据文件包含 yearproduction两个变量,命名 wateroutput,一个数据文件包含 yearcapitallabor三个变量,命名为 waterinput。这个操作的具体命令如下:

use c:\data\water,clear
drop capital labor
save c:\data\wateroutput, replace

以上命令,第一个命令实现了原数据文件的打开,第二个命令删除了变量
capitallabor,第三个命令实现了存储,新文件的名字为
wateroutput,并用 replace命令替换了原有数据。

    use c:\data\water,clear
    keep year capital labor
    save c:\data\waterinput, replace

以上命令,第一个命令实现了原数据文件的打开,第二个命令保留了变量
capitallabor,第三个命令实现了存储,新文件的名字为 waterinput,并用 replace命令替换了原有数据

  1. 数据的纵向拆分

原始数据有时包含过多的样本观测值,但在实际应用中可能根据需要将其按某种特征拆分为不同的数据表,这是就要实现数据的纵向拆分。数据的纵向拆分用到的主要命令还是 dropkeep

例如将 usaauto数据文件拆分为两个数据文件,一个数据文件叫
domesticauto,只包含国产车的相关内容,一个数据文件叫 foreignauto,只包含进口车的相关内容,具体操作如下:

use c:\data\usaauto,clear
drop if foreign==1
save c:\data\domesticauto, replace 

以上命令完成了第一个数据文件的建立,第一个命令完成了原始数据文件的打开,第二个命令删除 foreign变量为 1 的数据,第三个命令存储新的数据文件,名称为 domesticauto,并用 replace命令替换了原有数据

第二个数据文件建立的命令如下所示:

    use c:\data\usaauto,clear
    keep if foreign==1
    save c:\data\foreignauto, replace

以上命令完成了第二个数据文件的建立,第一个命令完成了原始数据文件的打开,第二个命令保留了 foreign变量为 1 的数据,第三个命令存储新的数据文件,名称为 foreignauto,并用 replace命令替换了原有数据

3. 一步到位保存数据子集—— savesome
在一个数据集中使用 stata自带的 keepdrop命令构建所需要的子集时筛选和保存需要用到两个不同的命令。接下来介绍的外部命令
savesome可以一步到位保存数据子集。
命令安装:

 help savesome 

stata帮助界面中找到下载链接
命令语句:

    savesome [varlist] [if exp] [in range] using filename [, old save_options]

命令解释:
savesome命令分为四个部分: 第一个部分是 if语句,用来筛选符合条件的观测;第二部分是变量名称,如果要选取数据集中特定变量作为子集,直接将变量名称写上;第三部分 using filename 表示要保存的子集文件名及文件路径;第四部分 old 为可选参数,添加参数后数据子集可支持较早版本的 stata

举例说明:
我们使用stata自带的auto数据集:

  1. 选择数据集中进口车
savesome if foreign=1 using foreignauto.dta
  1. 从数据集中选择 make price foregn构建子集,保存为 smallauto
savesome make price foregn using smallauto.dta 

数据合并

  1. 数据的横向合并

数据的横向合并是横向拆分的逆操作,但是其要比拆分复杂,因为合并时要实现同一个体数据的对接,而不能出现对接错误的情况。所以在横向合并之前最好先对数据进行排序处理,然后实现合并。合并所使用的命令语句为 merge,具体语句如下所示:

merge [varlist] using filename [filename ...] [, options]

merge为合并的命令语句, [varlist]代表合并进去的新变量, using filename指的是所要与原文件合并的文件路径, options包含较多的功能,表 2.11 显示了其具体内容。

举例:利用横向拆分实验中生成的数据文件 waterinputwateroutput实现数据的横向合并,匹配变量为 year,生成新的数据文件命名为 waternew。这个操作的命令为:

use c:\data\wateroutput, clear
sort year
save c:\data\wateroutput, replace
use c:\data\waterinput, clear
sort year
merge year using c:\data\wateroutput
save c:\data\waternew, replace

在以上命令语句中,第一个命令语句实现了 wateroutput数据文件的打开,第二个命令语句将文件按年份变量进行排序,第三个命令语句保存了排序之后的数据文件,第四个命令语句实现了 waterinput数据文件的打开,第五个命令语句将此数据按年份变量进行排序,第六个命令语句按年份变量将 wateroutput文件合并到 waterinput文件中,第七个命令语句保存合并之后的数据文件。

  1. 数据的纵向合并

数据的纵向合并为数据纵向拆分的逆操作,使用的主要命令为 append命令,具体语句如下:

 append using filename [, options] 

在这个命令语句中, append是进行纵向合并的命令语句, using filename是进行纵向合并的文件路径, [, options]的内容与 merge相似,但更为简化。

例如,利用纵向拆分实验中生成的数据文 domesticautoforeignauto实现数据的纵向合并,生成的数据文件命名为 usaautonew。这个操作的命令为:

use c:\data\domesticauto, clear
append using c:\data\foreignauto
save c:\data\usaautonew, replace

在以上命令中,第一个命令语句打开了原始数据文件,第二个命令将 foreignauto文件合并到 domesticauto文件中,第三个命令语句存储了合并后的数据文件。

  1. 一次合并多个csv文件—— csvconvert
    csvconvert 命令用于将多个 csv格式文件合并为一个 .dta格式文件,比较适合处理具有时间周期性特点的变量。
    命令:
 csvconvert input_directory , replace [options] 

该命令有三个参数:

参数名 功能
output_file(file_name) 设置输出文件名
output_dir(output_directory) 设置输出路径
input_file(.csv file list) 选择要合并的文件

命令下载:

help csvconvert

以命令配套的四个世界银行文件为例,首先看文件结构

dir C:\Uers\Administrator\Desktop\stata学习文件\worldbank\*.csv

wb2010.csv

使用 csvconvert命令将四个年度数据纵向合并

csvconvert  C:\Users\Administrator\Desktop\stata学习文件\worldbank, replace
默认情况下合并后的文件名为output.dta

要合并的四个子文件必须在同一个文件夹中,默认情况下, csvconvert命令会合并文件夹中所有文件 ,可以用 note 命令核对所合并的文件情况 .用 input_file参数选择所有合并的文件名,在此,我们只选择2008年度和2009年度的数据

csvconvert C:\Users\Administrator\Desktop\stata学习文件\worldbank
, replace input_file(wb2008.csv wb2009.csv)

本文中所用数据文件下载地址:

数据文件:链接: https://pan.baidu.com/s/1qXRh9EG 密码: 5ltw

关于我们

联系我们

  • 欢迎赐稿: 欢迎将您的文章或笔记投稿至Stata连享会(公众号: StataChina),我们会保留您的署名;录用稿件达五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
  • 意见和资料: 欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。
  • 招募英才: 欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
  • 联系邮件: StataChina@163.com

特别说明

文中包含的链接在微信中无法生效。请点击本文底部左下角的【阅读原文】,转入本文【简书版】


Stata连享会二维码

相关文章

网友评论

    本文标题:stata小白之三:数据拆分与合并

    本文链接:https://www.haomeiwen.com/subject/hqncgxtx.html