Merge 如何在stata中合并数据

Merge 如何在stata中合并数据,merge,stata,Merge,Stata,我正在学习stata,并试图理解合并。有人能给我解释一下不同类型合并的区别吗?(1:1,1:m,m:1,m:m)?如果不清楚,这里是一个快速概述 首先,澄清术语很重要 合并基本上是基于指定变量或变量列表(称为键变量)连接两个数据集中的行(Stata称之为观察)。您必须从内存中已有的一个数据集开始(Stata将其称为主数据集数据集),然后将另一个数据集合并到其中(另一个数据集称为使用数据集)。剩下的是一个数据集,其中包含主控中的所有变量,以及主控中不存在的中的任何变量。它还生成一个名为\u mer

我正在学习stata,并试图理解合并。有人能给我解释一下不同类型合并的区别吗?(1:1,1:m,m:1,m:m)?

如果不清楚,这里是一个快速概述

首先,澄清术语很重要

合并
基本上是基于指定变量或变量列表(称为
变量)连接两个数据集中的行(Stata称之为
观察
)。您必须从内存中已有的一个数据集开始(Stata将其称为
主数据集
数据集),然后
将另一个数据集合并到其中(另一个数据集称为
使用
数据集)。剩下的是一个数据集,其中包含
主控
中的所有变量,以及
主控
中不存在的
中的任何变量。它还生成一个名为
\u merge
的新变量,指示
主控
中是否有使用
而不在
中的行,反之亦然。合并的数据集(除非另有规定)将包含
master
using
中的所有行,无论这两个关键变量是否匹配

“唯一标识符”的概念很重要。如果一个变量(或变量组合)在每一行中具有不同的值,则它唯一地标识行。这对于1:1、1:m等的细节非常重要

  • 1:1表示键变量在两个数据集中提供唯一标识符。您将在内存中保留两个数据集中的所有行
  • 1:m表示
    master
    数据集中的关键变量唯一标识行,但
    using
    数据集中的关键变量不标识行。您仍将保留两个数据集中的所有行,但如果关键变量在using dataset中具有重复的观测值,
    master
    dataset将获得重复值以匹配它们
  • m:1是1:m的反义词。
    master
    数据集中的键变量不唯一标识行,但使用
    数据集中的
    中的键变量唯一标识行
  • m:m有点奇怪。key变量不能唯一地标识两个数据集中的行,因此您将得到两侧的重复行
例如:

** make a dataset and save as a tempfile called `b'. Note that k uniquely identifies rows
set obs 3 
gen k = _n
gen b = "b"
list
   +-------+
   | k   b |
   |-------|
1. | 1   b |
2. | 2   b |
3. | 3   b |
   +-------+

tempfile b
save `b'

** make another dataset and merge `b' to it. Note that k uniquely identifies rows

set obs 3 
gen k = _n
gen a = "a"
list
   +-------+
   | k   a |
   |-------|
1. | 1   a |
2. | 2   a |
3. | 3   a |
   +-------+

merge 1:1 k using `b'
list
   +-------------------------+
   | k   a   b        _merge |
   |-------------------------|
1. | 1   a   b   matched (3) |
2. | 2   a   b   matched (3) |
3. | 3   a   b   matched (3) |
   +-------------------------+


** make another dataset and merge `b' to it. Note that k does not uniquely identify rows and that k=2 and k=3 do not exist in the master dataset
clear
set obs 3 
gen k = 1
gen a = "a"
list
   +-------+
   | k   a |
   |-------|
1. | 1   a |
2. | 1   a |
3. | 1   a |
   +-------+
merge m:1 k using `b'
list
   +----------------------------+
   | k   a   b           _merge |
   |----------------------------|
1. | 1   a   b      matched (3) |
2. | 1   a   b      matched (3) |
3. | 1   a   b      matched (3) |
4. | 2       b   using only (2) |
5. | 3       b   using only (2) |
   +----------------------------+

merge
命令详细记录在Stata数据管理参考手册中,可从Stata帮助菜单中的PDF文档项访问。