首页 文章

将包含两个变量之一的记录组合在一起

提问于
浏览
0

我正在使用Stata,我有一个大型数据集,如果他们共享两个变量中的一个,我需要将记录组合在一起 .

例如,采取以下三个观察结果:

Observation  | matching var1 | matching var2
1              xxx              aaa
2              xxx              bbb
3              yay              bob

如果我按 var1 对记录进行分组,则前两个观察将在同一组中,最后一个观察将在一个单独的组中 . 同样,如果我使用 var2 进行分组,则观察二和三将在同一组中,观察一个将在一个单独的组中 . 但是,如果我根据 var1var2 的匹配对记录进行分组,则所有观察都将在同一组中 .

我想创建一个'group id'变量,它将在所有这些记录中采用相同的值 .

关于我应该怎么做的任何建议?

1 回答

  • 1

    社区贡献的 group_twoway (在SSC中可用)可以匹配两个变量:

    ssc install group_twoway
    

    使用您的其他示例:

    clear
    
    input str3(var1 var2)
    "xxx" "aaa"
    "yyy" "bbb"
    "mmm" "ccc"
    "nnn" "ccc"
    "mmm" "ddd"
    "ooo" "ff" 
    "pp"  "eee"
    "qq"  "ff" 
    "rr"  "u"  
    "xxx" "bbb"
    end
    
    group_twoway var1 var2, generate(group_id)
    
    Result                           # of obs.
    -----------------------------------------
    not matched                             0
    matched                                10  
    -----------------------------------------
    
    list, sepby(group_id) constant
    
         +------------------------+
         | var1   var2   group_id |
         |------------------------|
      1. |  xxx    aaa          1 |
      2. |  yyy    bbb          1 |
         |------------------------|
      3. |  mmm    ccc          2 |
      4. |  nnn    ccc          2 |
      5. |  mmm    ddd          2 |
         |------------------------|
      6. |  ooo     ff          3 |
         |------------------------|
      7. |   pp    eee          4 |
         |------------------------|
      8. |   qq     ff          3 |
         |------------------------|
      9. |   rr      u          5 |
         |------------------------|
     10. |  xxx    bbb          1 |
         +------------------------+
    

相关问题