append 后如何删除_如何在STATA中合并数据文件呢?

作者:江小白
邮箱:jieresearch@163.com

我们在使用stata进行数据分析时,可能涉及多个数据文档的合并操作或者同时使用不同数据集中的多个变量,这都需要我们进行文档间不同变量的归并。
例如,我们需要使用CFPS(中国家庭追踪调查)数据库进行实证分析,而申请拿到的原始数据中包含成人数据库,儿童数据库,家庭关系库等多个数据集,我们需要的变量分散在这些数据集中,此时就需要将不同数据库中的不同变量放到一起;再譬如我们需要CFPS多期的调查数据构建多期面板,这又需要我们把多期的数据合并到一起...

在stata中就为我们提供了mergeappend 等命令以实现多个数据文件的「横向合并」「纵向合并」


「merge」 命令

mergeappend 都是stata自带的数据处理命令,为了了解命令的使用,我们可以使用help 命令

help merge

通过帮助命令我们可以观察到如下语句格式

通过关键变量进行1对1合并
merge  1:1  varlist  using  filename

通过关键变量进行多对1合并
merge m:1 varlist using filename

通过关键变量进行1对多合并
merge 1:m varlist using filename

通过关键变量进行多对多合并
merge m:m varlist using filename

通过观测数进行1对1合并
merge 1:1 _n using filename

利用帮助文件的示例演示1对1的数据合并如何操作

webuse autosizelistwebuse autoexpenselist/*Perform 1:1 match merge*/webuse autosizemerge 1:1 make using http://www.stata-press.com/data/r15/autoexpenselist

通过list命令,我们可以观察到 autosize 和 autoexpense 的数据详情

autosize 数据

makeweightlength
Toyota   Celica2,410174
BMW 320i2,650177
Cad. Seville4,290204
Pont Grand Prix3,210201
Datsun 2102,020165
Plym. Arrow3,260170

autoexpense 数据

makepricempg
Toyota Celica5,89918
BMW 320i9,73525
Cad. Seville15,90621
Pont. Grand Prix5,22219
Datsun 2104,58935

根据数据中的make变量,进行 1对1 的合并,在merge合并中我们需要定义 master 数据集和 using 数据集,相当于我们对于数据集定义主从关系,我们将 autosize 数据集作为master,然后 using autoexpense 数据集1对1合并,那么可以得到如下合并结果:

27b2bb78ed0c97c474bdbad4fd9fbca2.png

使用 merge 后,stata会给出数据 match 的结果,如下表:这个结果告诉我们,两个数据集中有5个观测变量成功 match(用_merge==3表示这类变量),有1个观测变量 not matched,而且这个匹配失败的变量来自master 数据集 (用_merge==1表示这类变量)。

「数据match结果」

Result# of obs.
not matched1
from master1  (_merge==1)
from using0  (_merge==2)
matched5  (_merge==3)

在数据处理过程中可以在匹配后删除我们不需要的not matched 的样本,例如:drop if merge==1可以直接删除master数据集中未匹配的样本。


此外,merge 命令还提供了诸多的选择项(option)内容,比较常用的有:

  1. keepusing(varlist):保留数据集中特定变量
  2. generate(newvar):使用新的变量名称标记merge结果,默认为merge
  3. nogenerate :不生成merge变量
  4. update: 用using数据集中的值替代master数据集中相同变量的缺失值
  5. replace:用using数据集中的值替代master数据集中相同变量的非缺失值
  6. force:允许字符型和数值型变量之间不匹配

示例中还提供了1:m,m:1,以及多个选择项使用的例子(我们一般很少用到m:m合并),其操作与解读与1:1的合并类似

   /*进行 1:1  merge, 并保留匹配变量*/webuse autosize, clearmerge 1:1 make using http://www.stata-press.com/data/r15/autoexpense, ///keep(match) nogenlist/* Setup */webuse dollars, clearlistwebuse sforcelist/*与 sforce 进行 m:1  merge */merge m:1 region using http://www.stata-press.com/data/r15/dollarslist/*Setup*/webuse overlap1, clearlist, sepby(id)webuse overlap2list/*进行 1:m  merge, 带update replace选项*/webuse overlap2, clearmerge 1:m id using http://www.stata-press.com/data/r15/overlap1 ///    update replacelist  /*按样本进行顺序合并*/webuse sforce, clearlistmerge 1:1 _n using http://www.stata-press.com/data/r15/dollarslist


「append」 命令

如果需要实现数据的纵向合并,我们使用append命令

help append

append的语句格式如下

append using filename [filename ...] [, options]

使用示例数据演示合并

/*Setup*/webuse evenlistwebuse oddlistappend using http://www.stata-press.com/data/r15/evenlist

even数据集

numbereven
612
714
816

odd 数据集

numberodd
11
23
35
47
59

合并结果

numberoddeven
11.
23.
35.
47.
59.
6.12
7.14
8.16

append命令也带有 keep nolabel force等选择项,使用方法与merge大同小异


这些操作可以帮助我们在stata中实现数据的横向与纵向合并。例如在CFPS数据集中,可以根据追踪调查所标记的个人ID(pid)和家庭ID(fid)等变量从相应数据库中提取我们所需的变量进行合并;也可以根据调查年份合并我们所需的面板...

在实际中可以根据数据的结构特点和研究需求选择合适的操作命令,用stata进行数据集的合并你学会了吗?

本文相关的附件可以从https://github.com/czxa/Stata-Chinese-community获取,点击阅读原文即可跳转~

欢迎关注公众号获取更多stata相关推文

a4ce14893fd180d962994188f9bb4229.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 内网怎么安装git环境_linux 安装go环境

官网下载安装包The Go Programming Language​golang.google.cngo1.4.linux-amd64.tar.gz解压:tar -C /usr/local -zxvf go1.4.linux-amd64.tar.gz添加环境变量:export PATH$PATH:/usr/local/go/bin安装完成输入go测试安装成功,写个简单的代码…

java中异常注意问题(发生在多态是的异常问题)

/* 异常的注意事项: 1,子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类。 2,如果父类抛出多个异常,那么子类只能抛出父类异常的子集。 简单说&#xff1…

cups支持的打印机列表_Win10“Microsoft Print to PDF”虚拟打印机不见了,如何找回?...

MS酋长很早以前在介绍Windows10的新功能时,就提到过《Win10原生支持把文件转换成PDF格式》,该功能实际上是基于“Microsoft Print to PDF”虚拟打印机来实现的。当你点击打印时,在打印机列表中就可以看到“Microsoft Print to PDF”虚拟打印机…

循环队列的进队算法c语言,循环队列的定义,入队算法,出队算法,遍历算法,及其代码实现-Go语言中文社区...

队列 的定义:一种可以是实现“先进先出”的存储结构。数据的进出类似于排队购票。队只允许队尾一端(rear)添加,在另一端队头(front)删除。队有队头(front)和队尾(rear)两个指针。队头front指向第一个元素,队尾rear指向无实际意义的元素&#…

java中paint方法和paintComponent方法的不同

/*1.由Component.java源代码中可以看见其中的paint()方法体是空的,在Container中重写了该方法,其子类Window等也重写了该方法2.由JComponent.java源代码中可以看见其中的paint()方法中调用paintComponent, paintChildren, paintBo…

java office文件加水印_文档预览加水印——或可一用的防泄密方式

给文件加水印是常见的一种宣示版权的方式。像Office、WPS都自带加水印功能,能够给文档加上"保密"、"严禁复制"这样的水印。在多可系统中,也有这么一个添加水印的功能。启用该功能后,在使用HTML5预览时,多可系…

android 获取apk资源,android-apk-parser

APK解析库用于读取/解析 packageName。versionName。versionCode信息的简单类,以及已经编译的androidsdk文件中的更多内容。通过解压 AndroidManifest.xml 文件并解码编译好的XML二进制文件来收集这里信息,就可以实现。我一直在用它来实现各种android工件…

apache license 2.0如何使用防止法律纠纷_go语言使用Swaggo详细教程

相信很多程序猿和我一样不喜欢写API文档。写代码多舒服,写文档不仅要花费大量的时间,有时候还不能做到面面具全。但API文档是必不可少的,相信其重要性就不用我说了,一份含糊的文档甚至能让前后端人员打起来。 而今天这篇博客介绍的…

静态代码块,构造代码块,局部代码块演示

public class Test{static int num;static int numObj;//记录有多少个对象产生!static{//静态代码块, 是用来给类进行初始化的!//num 10;num;num *12;//没有进入静态代码块之前,num的初始化值是0System.out.println(num);//main(…

android执行main函数,AndroidStudio执行main方法报错

问题:有时在开发中想直接写一个java文件来测试一些东西,但是AndroidStudio执行的时候会报错。代码信息:public class HelloWorld {public static void main(String[] args) {System.out.println("HelloWorld");}}报错信息12:04:41:…

模拟java.util.Collection一些简单的用法

/* 需求:模拟java.util.Collection一些简单的用法!注意:java虚拟机中并没有泛型类型的对象。泛型是通过编译器执行一个被称为类型擦除的前段转换来实现的。 1)用泛型的原生类型替代泛型。 原生类型是泛型中去掉尖括号及其中的类型…

hive 导出json格式 文件_Hive 系列 之 基本操作合集

下面是本课程概览:(1)hive系列之简介,安装,beeline和hiveserver2(2)hive系列之基本操作(3)hive系列之udf(4)hive系列之二级分区和动态分区&#x…

android开发自定义view倍丝曲线,从0到1Android自定义View(四)贝塞尔曲线

原标题:从0到1Android自定义View(四)贝塞尔曲线2017年安卓巴士全球开发者论坛-上海站作者本文由两点水投稿,博客地址:http://www.apkbus.com/myspaceblog-911082.html前言扯来扯去,前面三篇自定义 View 文章,终于扯完了…

如何保证对象的唯一性

/* 如何保证对象的唯一性:1.不允许其他程序用new来创建该类对象。2.在该类创建一个本类实例。3.对外提供一个方法让其他程序可以获取该对象的引用。 */ public class Test{public static void main(String[] args){//Subject sub Subject.oSub;//这种方法不可控&am…

ios kvo 要引入_腾讯社招iOS面试记录

毕业好几年了,上周发送了简历给腾讯,参加了腾讯面试。具体部门这边就不说了。这次面试还是收获到了很多。一面电话面试:面试官主要是针对iOS相关的基础问题。先简单自我介绍一下自己对mrc和arc的理解谈谈对自动释放池的理解自动释放池在mrc和…

动态设置html字号,动态设置html的font-size值 (适配文字大小)

PC端(function () {function setRootFontSize() {let rem, rootWidth;let rootHtml document.documentElement;//限制展现页面的最小宽度rootWidth rootHtml.clientWidth < 1366 ? 1366 : rootHtml.clientWidth;// 19.2 设计图尺寸宽 / 100( 设计图的rem 100 )rem roo…

一个小例子对多态简单的理解

class Parent{int age;String name;public Parent(String name, int age){this.name name;this.age age;}public void writeWay(){System.out.println("毛笔!");}}class Child extends Parent{int age;String name;//这里只说为了说明一个问题&#xff0c;其实完全…

运行shell脚本时怎么知道jdk路径_Shell写脚本关于ssh执行jar包,需要刷新JDK路径的问题...

比如脚本中下面这一段ssh $i "java -jar /applog/$PROJECT/$APPNAME --server.port$SERVER_PORT >/dev/null 2>&1 &"免密登录linux服务器&#xff0c;执行jar包&#xff0c;通过ssh执行java程序&#xff0c;涉及到一个找不到JDK路径的问题&#xff0c;…

html 中加号的表示方法,CSS的+(加号)选择器怎么用

在CSS中“”符号选择器用于选择紧跟在指定元素之后但不在特定元素内部的元素。下面本篇文章就来具体介绍一下&#xff0c;希望对大家有所帮助。“”符号选择器在CSS中“”符号选择器被称为相邻兄弟选择器&#xff0c;用于选取在同一父元素下的&#xff0c;紧跟指定元素之后的另…

poj 1724ROADS(bfs和dfs做法)

1 /*2 dfs比较好想&#xff0c;就是测试数据的问题&#xff0c;导致在遍历边的时候要倒着遍历才过&#xff01;3 */4 #include<iostream> 5 #include<cstdio>6 #include<cstring>7 #include<vector>8 #include<algorithm>9 #define Max 0x3f3f3f…