参考https://www.stata.com/support/faqs/data-management/creating-group-identifiers/:
要从现有变量oldid创建新变量newid, 无论oldid是字符串还是数字,请键入
. egen newid = group(oldid)
新变量newid将包含1作为oldid的第一个值,2作为第二个值,等等 上。
group()
命令可以生成分组变量的实际值而不是1,2,3 ....例如,在以下数据集中,
clear
input units price sku week store subc
35 4.3 1 1 1 1
23 3 2 1 1 1
12 2.5 3 1 1 2
10 1 4 1 1 2
35 12 5 1 1 2
35 12 6 1 1 3
35 5.3 1 2 1 1
23 4 2 2 1 1
12 3.5 3 2 1 2
10 2 4 2 1 2
35 13 5 2 1 2
35 13 6 2 1 3
end
我们如何修改命令egen long joint = group(subc sku)
,使joint
的实际值为:
clear
input units price sku week store subc joint
35 4.3 1 1 1 1 1_1
23 3 2 1 1 1 1_2
12 2.5 3 1 1 2 2_3
10 1 4 1 1 2 2_4
35 12 5 1 1 2 2_5
35 12 6 1 1 3
35 5.3 1 2 1 1
23 4 2 2 1 1
12 3.5 3 2 1 2
10 2 4 2 1 2
35 13 5 2 1 2
35 13 6 2 1 3
end
或者一般而言,如何确保Stata不会修改group()
命令的结果?
变量subc
和sku
的连接不是一个选项,因为它没有在forval
循环中为我提供所需的结果。
答案 0 :(得分:0)
group()
是egen
函数,而不是命令。
连接可以准确地为您指定。这有什么问题?
clear
input units price sku week store subc
35 4.3 1 1 1 1
23 3 2 1 1 1
12 2.5 3 1 1 2
10 1 4 1 1 2
35 12 5 1 1 2
35 12 6 1 1 3
35 5.3 1 2 1 1
23 4 2 2 1 1
12 3.5 3 2 1 2
10 2 4 2 1 2
35 13 5 2 1 2
35 13 6 2 1 3
end
egen joint = concat(subc sku), p(_)
list , sepby(subc)
+---------------------------------------------------+
| units price sku week store subc joint |
|---------------------------------------------------|
1. | 35 4.3 1 1 1 1 1_1 |
2. | 23 3 2 1 1 1 1_2 |
|---------------------------------------------------|
3. | 12 2.5 3 1 1 2 2_3 |
4. | 10 1 4 1 1 2 2_4 |
5. | 35 12 5 1 1 2 2_5 |
|---------------------------------------------------|
6. | 35 12 6 1 1 3 3_6 |
|---------------------------------------------------|
7. | 35 5.3 1 2 1 1 1_1 |
8. | 23 4 2 2 1 1 1_2 |
|---------------------------------------------------|
9. | 12 3.5 3 2 1 2 2_3 |
10. | 10 2 4 2 1 2 2_4 |
11. | 35 13 5 2 1 2 2_5 |
|---------------------------------------------------|
12. | 35 13 6 2 1 3 3_6 |
+---------------------------------------------------+