创建排序组ID而不对组进行排序
Create sorting group ID without sorting the group
我想创建一个排序组 ID 而不对组进行排序。
var1
是我感兴趣的变量,包含一些随机值。 id_1
是基于var1
的_n的唯一ID。 group
包含有关相应 var1
观察所属组的信息。请注意,group
中的字符串不包含任何排序信息,这意味着按字母顺序排序没有任何价值。
我想创建 id_group
,因为在下一步中,我想通过 group
折叠 var1
而不会丢失 group
的排序。如果我只是 collapse(max) var1, by(group)
,Stata 将按 group
字母顺序对结果进行排序——这是我不想要的。我想创建 id_group
然后 collapse(max) var1, by(id_group)
并保持组的顺序。
我曾尝试使用 bysort
,但此命令按字母顺序 group
排序以创建新 ID。 egen
也不起作用,因为创建的 ID 未按排序顺序排列。
clear
input var1 id_var1 str6 group id_group
3 1 "C" 1
1 2 "C" 1
9 3 "C" 1
5 4 "A" 2
3 5 "B" 3
0 6 "F" 4
9 7 "Z" 5
1 8 "Y" 6
3 9 "T" 7
2 10 "T" 7
end
clear
input var1 id_var1 str6 group id_group
3 1 "C" 1
1 2 "C" 1
9 3 "C" 1
5 4 "A" 2
3 5 "B" 3
0 6 "F" 4
9 7 "Z" 5
1 8 "Y" 6
3 9 "T" 7
2 10 "T" 7
end
gen wanted = sum(group != group[_n-1])
list , sepby(wanted)
+--------------------------------------------+
| var1 id_var1 group id_group wanted |
|--------------------------------------------|
1. | 3 1 C 1 1 |
2. | 1 2 C 1 1 |
3. | 9 3 C 1 1 |
|--------------------------------------------|
4. | 5 4 A 2 2 |
|--------------------------------------------|
5. | 3 5 B 3 3 |
|--------------------------------------------|
6. | 0 6 F 4 4 |
|--------------------------------------------|
7. | 9 7 Z 5 5 |
|--------------------------------------------|
8. | 1 8 Y 6 6 |
|--------------------------------------------|
9. | 3 9 T 7 7 |
10. | 2 10 T 7 7 |
+--------------------------------------------+
我想创建一个排序组 ID 而不对组进行排序。
var1
是我感兴趣的变量,包含一些随机值。 id_1
是基于var1
的_n的唯一ID。 group
包含有关相应 var1
观察所属组的信息。请注意,group
中的字符串不包含任何排序信息,这意味着按字母顺序排序没有任何价值。
我想创建 id_group
,因为在下一步中,我想通过 group
折叠 var1
而不会丢失 group
的排序。如果我只是 collapse(max) var1, by(group)
,Stata 将按 group
字母顺序对结果进行排序——这是我不想要的。我想创建 id_group
然后 collapse(max) var1, by(id_group)
并保持组的顺序。
我曾尝试使用 bysort
,但此命令按字母顺序 group
排序以创建新 ID。 egen
也不起作用,因为创建的 ID 未按排序顺序排列。
clear
input var1 id_var1 str6 group id_group
3 1 "C" 1
1 2 "C" 1
9 3 "C" 1
5 4 "A" 2
3 5 "B" 3
0 6 "F" 4
9 7 "Z" 5
1 8 "Y" 6
3 9 "T" 7
2 10 "T" 7
end
clear
input var1 id_var1 str6 group id_group
3 1 "C" 1
1 2 "C" 1
9 3 "C" 1
5 4 "A" 2
3 5 "B" 3
0 6 "F" 4
9 7 "Z" 5
1 8 "Y" 6
3 9 "T" 7
2 10 "T" 7
end
gen wanted = sum(group != group[_n-1])
list , sepby(wanted)
+--------------------------------------------+
| var1 id_var1 group id_group wanted |
|--------------------------------------------|
1. | 3 1 C 1 1 |
2. | 1 2 C 1 1 |
3. | 9 3 C 1 1 |
|--------------------------------------------|
4. | 5 4 A 2 2 |
|--------------------------------------------|
5. | 3 5 B 3 3 |
|--------------------------------------------|
6. | 0 6 F 4 4 |
|--------------------------------------------|
7. | 9 7 Z 5 5 |
|--------------------------------------------|
8. | 1 8 Y 6 6 |
|--------------------------------------------|
9. | 3 9 T 7 7 |
10. | 2 10 T 7 7 |
+--------------------------------------------+