我正在与Stata合作,我有一个大数据集,如果它们共享两个变量之一,则需要将记录分组在一起。
例如,进行以下三个观察:
Observation | matching var1 | matching var2
1 xxx aaa
2 xxx bbb
3 yay bob
如果我将记录按var1
分组,则前两个观察值将在同一组中,最后一个观察值将在单独的组中。同样,如果我使用var2
进行分组,则观察值2和3将在同一组中,而观察值1将在单独的组中。但是,如果我根据var1
或var2
上的匹配将记录分组,则所有观察值将在同一组中。
我想创建一个'group id'变量,该变量在所有这些记录中都采用相同的值。
关于我应该如何做的任何建议?
答案 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 |
+------------------------+