【问题标题】:How to merge data in stata如何在stata中合并数据
【发布时间】:2015-08-07 12:37:32
【问题描述】:

我正在学习 stata,并试图理解合并。有人可以向我解释不同类型的合并之间的区别吗? (1:1, 1:m, m:1, m:m)?

【问题讨论】:

  • merge 命令在 Stata 数据管理参考手册中有大量文档,可从 Stata 帮助菜单中的 PDF 文档项访问。

标签: merge stata


【解决方案1】:

如果Stata manual 不清楚,这里有一个快速概述。

首先,澄清术语很重要。

merge 基本上基于指定的变量或变量列表(称为key 变量)连接两个数据集中的行(Stata 称它们为observations)。您必须从内存中已经存在的一个数据集开始(Stata 将其称为master 数据集),然后您将merge 另一个数据集添加到它(另一个数据集称为using 数据集)。剩下的是一个单一的数据集,其中包含来自master 的所有变量,以及来自using 的任何不存在于master 中的变量。它还生成一个名为_merge 的新变量,指示master 中是否有不在using 中的行,反之亦然。合并的数据集(除非另有说明)将包含来自masterusing 的所有行,无论两者之间的关键变量是否匹配。

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

  • 1:1 表示关键变量在两个数据集中提供唯一标识符。您将在内存中保留两个数据集中的所有行。
  • 1:m 表示master 数据集中的键变量唯一标识行,但using 数据集中的键变量不唯一。您仍将保留两个数据集中的所有行,但如果关键变量在使用数据集中有重复的观察值,master 数据集将获得重复以匹配它们。
  • m:1 与 1:m 相反。 master 数据集中的关键变量不能唯一标识行,但 using 数据集中的关键变量可以。
  • m:m 有点奇怪。键变量不会唯一标识任一数据集中的行,因此您会得到两边重复的行。

例子:

** 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) |
   +----------------------------+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    相关资源
    最近更新 更多