美文网首页stata连享会-简书收录
A004. 为什么Stata中merge m:m容易出问题

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

作者: 蓝色Stata | 来源:发表于2018-07-18 09:34 被阅读115次

    为什么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容易出问题

        本文链接:https://www.haomeiwen.com/subject/tewnpftx.html