A004. 为什么Stata中merge m:m容易出问题

为什么Stata中merge m:m容易出问题

Stata在数据整理方面的功能很强大,如产生新数据、横向合并数据等。特别是处理微观数据的时候,不同的数据往往保存在不同的数据集中,需要把不同的数据集进行合并,然后进行数据分析。合并数据需要用merge命令。

merge命令选项

  • merge 1:1
  • merge 1:m
  • merge m:1
  • merge m:m

其中:merge m:m 很少使用。Stata的manual中也提到不要用这个合并的方式。如果想多对多匹配,一般用cross或joinby命令。

  • cross
  • joinby

为什么不用merge m:m ,其实很简单,把该命令的匹配原理搞清楚就知道了。或者写一段代码,看看结果。

现在许多都不看manual,而是猜想命令。命令是Stata公司写的,一定要第一时间看Stata的manual里面的解释,而不是看某某怎么写的。下面用一个简单例子看看。

例子:个人数据与家庭数据合并

假设有一个包含家庭里面个人信息的数据,还有一个包含家庭中房产的数据。

  1. 导入个体数据集,并保存
clear
input ///
hid pid age 
1    11 45
1    12 42
1    13 10
1    14 7
end
tempfile a
save "`a'"
  1. 导入家庭房产数据
clear
input ///
hid houseid size 
1    1      120
1    2      100
end
  1. 合并两个数据
merge m:m hid using "`a'"
list
  1. 最后合并的结果
. list

     +------------------------------------------------+
     | hid   houseid   size   pid   age        _merge |
     |------------------------------------------------|
  1. |   1         1    120    11    45   matched (3) |
  2. |   1         2    100    12    42   matched (3) |
  3. |   1         2    100    13    10   matched (3) |
  4. |   1         2    100    14     7   matched (3) |
     +------------------------------------------------+

上面list列出了最后合并的结果。

  • 个人数据是4行,家庭数据2行,最后匹配完,是4行数据。
  • 匹配结果的第三行是匹配的家庭数据的第2行数据。
  • 上述结果明显不是多对多的匹配。

你可能感兴趣的:(A004. 为什么Stata中merge m:m容易出问题)