将共享两个变量之一的记录分组在一起

时间:2018-12-10 02:00:30

标签: stata

我正在与Stata合作,我有一个大数据集,如果它们共享两个变量之一,则需要将记录分组在一起。

例如,进行以下三个观察:

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

如果我将记录按var1分组,则前两个观察值将在同一组中,最后一个观察值将在单独的组中。同样,如果我使用var2进行分组,则观察值2和3将在同一组中,而观察值1将在单独的组中。但是,如果我根据var1var2上的匹配将记录分组,则所有观察值将在同一组中。

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

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

1 个答案:

答案 0 :(得分: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 |
     +------------------------+