让我们一起—merge

别再死记硬背了!用STATA的Merge命令,像数据库JOIN一样理解数据合并(附实战避坑点) 本文深入解析STATA的Merge命令,从数据库JOIN操作的角度讲解数据合并的底层逻辑与实战技巧。通过医疗行业案例详细演示1:m、m:1等合并类型的选择标准,并提供变量类型匹配、重复键值处理等常见问题的解决方案,帮助数据分析师避免典型错误,提升数据合并效率与准确性。 阅读详情
AI摘要

本文介绍了Stata中的merge命令,用于合并不同数据集。内容涵盖了一对一、多对一、一对多和多对多的合并方式,以及noreport、generate、update、replace、assert和keep等选项的使用,帮助读者理解如何根据需求进行数据合并并处理合并结果。

小编本身就是一名python开发工程师,我自己花了三天时间整理了一套python学习教程,从最基础的python脚本到web开发,爬虫,数据分析,数据可视化,机器学习,等,这些资料有想要的小伙伴" 点击 " 即可领取

1,导读

在我们的日常生活中经常会见到各种各样的表格,这些表格包含不同的信息。比如一个班主任,他有一个关于学生信息的表格,包括学生姓名,年龄等信息,各位任课老师也有这个班级学生的各科成绩。如果我们想进一步了解这个班级学生的信息,那么就会考虑把这些表格进行横向合并,这时就要用到我们今天介绍的命令—merge。

2,命令介绍

merge是将来自当前内存中的数据集(master dataset)的相应观察值与来自外部的数据集(using dataset)的观察值按照指定的关键变量进行横向拼接,具体有以下几种形式。

merge 1:1 varlist using filename [, options]

对指定的关键变量进行一对一的合并

merge m:1 varlist using filename [, options]

对指定的关键变量进行多对一的合并

merge 1:m varlist using filename [, options]

对指定的关键变量进行一对多的合并

merge m:m varlist using filename [, options]

对指定的关键变量进行多对多的合并

merge 1:1 _n using filename [, options]

通过观察值进行一对一的合并

注意:此处的"多"和"一"是指指定的关键变量再不同数据集中所对应的观察值。

3.选项介绍

merge的选项比较多,在此处我们结合例子介绍一些比较常用的选项,主要选项有以下几个:

(1),keepusing(varlist) :用来保留合并时using dataset中的部分变量,默认保留全部。

(2),generate(newvar):产生一个新的用来标记合并结果的变量,默认情况下是_merge。

(3),nogenerate :不产生用来标记合并结果的变量。

(4),noreport :不显示匹配结果表。

(5),update :使用using dataset中变量的值更新master dataset中同名变量的缺失值,master dataset中的非缺失值不变。

(6),replace :使用using dataset中变量的非缺失值代替master dataset中同名变量的值,using dataset中的缺失值对应的master dataset中的同名变量值不变。此选项要和update一起使用。

(7),force :强制字符串/数字变量类型匹配而不会出错。

(8),keep(results) :指定要保留的匹配结果。

(9),assert(results) :指定执行所需的匹配结果。

首先我们先用input输入两个数值变量类型,并将数据保存起来以备调用,命令如下:

clear all
cap mkdir d:/merge
cd d:/merge
input id x1 x2 x3 x4
1 0 1 1 4
2 1 1 2 2
3 1 . 3 2
4 . 3 5 1
10 2 4 3 5
end
save example1,replace
clear
input id x1 x2
1 0 1
1 . 1
2 1 3
2 2 .
3 2 4
4 1 .
4 2 3
20 2 4
end
save example2,replace

以example2为master dataest,example1为using dataset,可以观察到以id为关键变量进行合并是一个m:1的合并,先看一下默认情况下的合并情况:

use example2,clear
merge m:1 id using example1
list,sepby(id) //在不同的id之间用横线分隔,便于观察

在这里插入图片描述

在这里插入图片描述

结果分为两部分,第一部分为匹配结果表,它展示了匹配结果的总体情况。从表中可以看出匹配成功的有七个观察值,匹配成功的标记即为_merge=3;没有匹配成功的有两个观察值,结果分别为_merge=1(数据仅仅来自master data)和_merge=2(数据仅仅来自using data)。第二部分是把匹配结果展示出来,从中可以看到合并时默认保留了example1中所有变量的值,且在两个数据集都有相同变量时(如x1和x2),结果会以master data中的为主。

3.1 noreport

使用noreport选项时,就会把默认情况下的第一部分省略,只剩第二部分的结果。

use example2,clear
merge m:1 id using example1,noreport
list,sepby(id)

在这里插入图片描述

3.2 generate,nogenerate

使用这两个选项可以改变标记合并结果的变量

use example2,clear
merge m:1 id using example1,keepusing(x3) nogenerate
list,sepby(id)

在这里插入图片描述

在上述命令中我们还使用了keepusing(x3),可以看到在进行两个数据集的合并时,只保留了example1的x3变量,并且只有合并后的数据,没有标记变量。

use example2,clear
merge m:1 id using example1,keepusing(x3) generate(type)
list,sepby(id)

在这里插入图片描述

使用generate(type)产生一个用来标记合并结果的新变量type。

3.3 update replace

使用这两个选项更新缺失值

use example2,clear
merge m:1 id using example1,update
list,sepby(id)

在这里插入图片描述

可以观察到原本example2中x1,x2中缺失值都由example1中的同样变量相应值进行了更新。除此之外,标记合并结果的变量除了之前的1、2、3的值外,有了4和5这两个值。其中_merge=4代表至少一个缺失值被更新,没有与using data(此处为example1)冲突的非缺失值;_merge=5代表其中至少一个重叠变量的值有和using data(此处为example1)冲突的非缺失值。

use example2,clear
merge m:1 id using example1,update replace
list,sepby(id)

在这里插入图片描述

当同时使用update和replace时,会发现example2(maser data)的重叠变量的值全部由example1中的值来代替,在example1(using data)中重叠变量有缺失值除外。

3.4 assert,keep

使用这两个选项可以指定合并结果

use example2,clear
merge m:1 id using example1,assert(3)
list,sepby(id)

在这里插入图片描述

这时系统会报错,因为我们事先要求进行两个数据集的完全匹配,也就是以_merge=3的形式进行合并,但并不是所有的观察值都符合这种匹配方式的,所以会报错。这时可以去数据集看一下,和默认结果并没有什么不同,但不会展示。

在这里插入图片描述

use example2,clear
merge m:1 id using example1,keep(3)
list,sepby(id)

在这里插入图片描述

当使用keep()选项时要求为先进行默认的合并,然后保留_merge=3的结果,如图所示,只保留了我们想要的结果。

以上就是小编今天为大家带来的内容,小编本身就是一名python开发工程师,我自己花了三天时间整理了一套python学习教程,从最基础的python脚本到web开发,爬虫,数据分析,数据可视化,机器学习,等,这些资料有想要的小伙伴" 点击 " 即可领取

cadence allegro 17.x 降版本到16.6的转换工具 Cadence17.x版本降低到16.6版本转换工具 下载链接:Cadence17.x版本降低到16.6版本转换工具   使用方法: 软件使用比较简单,在「第一个路径输入栏」浏览指向17.x的设计文件,也就是需要降版本的17.4或者17.2的文件,然后在「第二个路径输入栏」里浏览指向转换后的文件保存路径,然后点击「转换」按钮即可。 ... 阅读详情

相关推荐

Nginx健康检查实战:如何用第三方模块提升服务可用性(附详细配置)

本文深入探讨了如何通过集成第三方健康检查模块来提升Nginx的服务可用性。文章对比了Nginx默认被动检查的局限性,并详细介绍了主动健康检查的核心优势、主流模块选型,以及以nginx_upstream_check_module为例的实战部署与配置指南,帮助运维人员构建更可靠的负载均衡架构。

weixin_28331555的博客 307

STATA数据合并与追加(一)Merge

关于Merge命令的一些说明和理解

iKunCode的博客 3万+

【计算机组成原理实验】状态机实验

理解“状态机”概念,掌握“状态机”思想描述时序系统。通过下列三种基于D触发器的计数器结构,构建状态机的状态转移电路:环形计数器、扭环计数器和条件判断的扭环计数器。基于“状态机”原理,设计一个“交通灯”系统:控制红黄绿信号灯按照以下顺序循环点亮:“绿 黄 红 绿 ……”,红灯、绿灯和黄灯的亮灯持续时间可以通过拨码开关独立设置。红灯和绿灯是持续亮灯模式,黄灯则是闪烁亮灯模式。

Rover_jb的博客 1332

Stata学习笔记|数据处理2-合并数据merge

stata学习记录_Day5

m0_64558566的博客 4万+

PyCharm旧版本下载地址

快捷找到PyCharm历史版本下载地址

piaopiaolanghua的专栏 4427

ASF-YOLO:一种基于注意尺度序列融合的细胞实例分割YOLO模型

随着样本制备技术和显微成像技术的快速发展,细胞图像的定量处理和分析在医学、细胞生物学等领域发挥着重要作用。基于卷积神经网络(CNN),可以通过神经网络训练学习不同细胞图像的特征信息,具有很强的泛化性能。两阶段的R-CNN系列[1,2,3]及其一阶段变体[4,5]是实例分割任务的经典CNN基础框架。在最近的研究中,You Only Look Once(YOLO)系列[6,7,8,9]已经成为实时实例分割中速度最快、最准确的模型之一。

m0_47867638的博客 9790

stata横向合并

stata横向合并 横向合并的前提是主数据集和从数据集必须都有一个(或者多个)相同的关键变量,只有具有相同的关键变量才可以将其进行横向合并。合并之前主从数据集均必须以这些关键变量进行排序,且除了关键变量之外,其它变量的名称不能相同。 一对一(1:1)合并 _merge = 1含义为这一条观测数据仅仅包含在master数据中,在using数据中没有找到。 _merge = 2则相反,含义为这一...

weixin_43919570的博客 1万+

交流伺服电机绝对式位置控制实战指南

伺服电机控制是工业自动化的核心技术之一,其核心原理是通过闭环反馈实现精确位置控制。绝对值编码器作为关键传感器,能提供单圈内的绝对位置信息,避免了增量式编码器的累计误差问题。在工程实践中,电子齿轮比配置、位置环PID调节等技术直接影响系统动态性能。本文以包装机械为典型场景,详细解析了从硬件选型到参数整定的全流程实现方案,特别是针对单圈绝对值编码器初始化和限位保护等易错环节,给出了经过验证的解决方案。通过合理设置17位编码器的电子齿轮比和优化运动控制算法,最终实现了±0.05°的高精度定位。

weixin_42531588的博客 281

stata基础数据清理——笔记(数据合并、虚拟变量)

keep if typrep=="A" →加引号是为了告诉stata,保留的是非数值型的,typrep是报表类型的变量名。substr代表,提取字符“enddate”中,从第1个字符,向后提取4个字符(这里4表示间距)的数据为“year”下载的数据中同一公司,同一年份中会对应 2组数据,是因为统计口径不一样,一般选择“年末在职人员”(在这之前处理①“stkcd”② “year”③对“stkcd”和“year”进行。重复2-3步,合并其他的。

Kayla_H的博客 7176

高速光耦在隔离串口通信中的选型与优化策略

本文深入探讨了高速光耦在隔离串口通信中的关键作用与选型优化策略。针对串口通信中因普通光耦响应慢导致的误码问题,文章详细分析了响应时间、电流传输比、供电电压与隔离耐压等核心选型指标,并对比了6N137、HCPL-0601等主流型号。同时,提供了电路设计、PCB布局的优化技巧及实用的调试指南,旨在帮助工程师实现高速、稳定的隔离串口通信。

grpc6streamer的博客 322

windows中通过docker部署LocateAnything-3B模型

windows中通过docker部署LocateAnything-3B模型

yilvyangguang520的博客 483

SQL中MERGE的用法

点击关注上方“SQL数据库开发”,设为“置顶或星标”,第一时间送达干货SQL专栏SQL基础知识第二版SQL高级知识第二版MERGE的定义MERGE关键字是一个神奇的DML关键字,它能将IN...

SQL数据库开发 1万+

Microsemi Libero使用技巧11——CoreUARTAPB RX管脚分配时不显示

调用串口IP核CoreUARTAPB,并例化到顶层设计,发现UART_RX管脚在进行管脚分配时没有显示出来,最后发现是CoreAPB3总线IP核配置不对导致,改为如下配置后正常。

whik1194的博客 756

通用SQL开发的利器——MERGE(下)Merge妙用

本文通过三个案例展示了SQL中MERGE语句的巧妙运用。案例1中,通过构造虚拟表并使用MERGE语句,实现了表中两条记录的NAME字段互换...

从底层逻辑去思考技术,去拥抱变化 1230

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

java merge_MERGE用法

MERGEMERGE是什么,如何使用呢?先看一个简单的需求如下:从T1表更新数据到T2表中,如果T2表的NAME 在T1表中已存在,就将MONEY累加,如果不存在,将T1表的记录插入到T2表中。DROP TABLE T1;CREATE TABLE T1 (NAME VARCHAR2(20),MONEY NUMBER);INSERT INTO T1 VALUES ('A',10);INSERT IN...

weixin_28665677的博客 2343

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

update与merge

2、“UPDATE A SET i=(SELECT i FROM b WHERE a.id=b.id) WHERE NOT EXISTS (SELECT 1 FROM b WHERE a.id=b.id)”NOT exists部分需要额外消耗,可以用merge避免。3、修改一条已有的数据:使用update的时候不管出现什么情况都会去修改(即覆盖原有数据),而merge会去查询原有数据,如果一样的话,不会取修改,只有出现不同的内容的时候才会取修改。2、merge只需要遍历一次表,可以更新可以插入。

2301_76787626的博客 900

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

merge用法linux,MERGE用法

MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。其语法如下:MERGE [hint] INTO [schema .] table [t_alias...

weixin_29898529的博客 1883

merge语句_SQL Server MERGE语句概述和示例

merge语句 In this article, we will review SQL Server MERGE statement, alternatives to MERGE statement, different clauses and examples of MERGE statement in SQL Server. 在本文中,我们将介绍SQL Server MERGE语句,...

culuo4781的博客 3278

Oracle Merge 使用

Oracle9i引入了MERGE命令,你能够在一个SQL语句中对一个表同时执行inserts和updates操作. MERGE命令从一个或多个数据源中选择行来updating或inserting到一个或多个表.在Oracle10g中MERGE有如下一些改进: 1、UPDATE或INSERT子句是可选的 2、UPDATE和INSERT子句可以加WHERE子句 3、在ON条件中使用常量过滤谓

nsj820的专栏 1万+

merge into用法mysql_Merge into使用用法

Merge是一个非常有用的功能,类似于Mysql里的insert into on duplicate key.Oracle在9i引入了merge命令,通过这个merge你能够在一个SQL语句中对一个表同时执行inserts和updates操作. 当然是update还是insert是依据于你的指定的条件判断的,Merge into可以实现用B表来更新A表数据,如果A表中没有,则把B表的数据插入A表....

weixin_34796621的博客 1万+

mysql merge 语句_Mysql merge引擎介绍

一. 什么是MERGE引擎MERGE存储引擎把一组MyISAM数据表当做一个逻辑单元来对待,让我们可以同时对他们进行查询。二. 应用场景如果需要把日志纪录不停的录入MySQL数据库,并且每天、每周或者每个月都创建一个单一的表,而且要时常进行来自多个表的合计查询,MERGE表这时会非常简单有效。三. 举例假设有如下两表1 CREATE TABLE `t1` (2 `id` int(10) unsig...

weixin_34337134的博客 1575

MERGE INTO

参考资料:http://www.oracle-developer.net/content/utilities/merge_counter.sql 文档:Oracle Database SQL Reference, 10g Release 2 (10.2)---1235页 Oracle MERGE INTO的用法总结: Use the MERGE statement to selec...

weixin_30274627的博客 1683

MERGE 函数的使用

1. Merge是什么?

Allen的专栏 1万+

oracle之merge的深入介绍

文章概要: 1.merge的详细介绍 2.merge的语法结构 3.与merge相关的例题

specialrun的博客 2783

oracle中merge写法,ORACLE中MERGE的使用

在Oracle 9iR2版中引入的MERGE语句通常被称作“更新插入”(upsert),因为使用MERGE可以在同一个步骤中更新(update)并插入(insert)数据行,对于抽取、转换和载入类型的应用软件可以节省大量宝贵的时间,比如向数据仓库中加载数据,数据仓库中没有的数据行可以插入到数据仓库中,而已经存在的数据行也同时被更新。在MERGE语句引入的时候,需要同时使用一条UPDATE和一条IN...

weixin_30722591的博客 939

SQL 中 Merge 的用法

SQL 中Merge的用法

gly1653810310的博客 6677
上一篇: Python一行代码可以做些什么
下一篇: 使用Pycharm的一些小技巧你真的知道吗?
python程序员小'鹏
博客等级 码龄6年 163粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值