Сгруппируйте записи, которые разделяют одну из двух переменных - PullRequest
0 голосов
/ 10 декабря 2018

Я работаю со Stata, и у меня есть большой набор данных, где мне нужно сгруппировать записи вместе, если они совместно используют одну из двух переменных.

Например, возьмите следующие три наблюдения:

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

Если бы я должен был сгруппировать записи по var1, первые два наблюдения будут в одной группе, а последнее наблюдениебудет в отдельной группе.Точно так же, если бы я должен был сгруппировать, используя var2, наблюдения два и три были бы в одной группе, а наблюдение один будет в отдельной группе.Однако, если бы я должен был сгруппировать записи на основе совпадения по var1 или var2, все наблюдения будут в одной группе.

Я хотел бы создать переменную 'group id', которая будет принимать одинаковое значение для всех этих записей.

Есть какие-нибудь предложения о том, как мне поступить?

1 Ответ

0 голосов
/ 10 декабря 2018

предоставленный сообществом 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 |
     +------------------------+
...