我有两个变量:
我想创建一个新的变量(cov_sum),它是packageid中所有covenanttype的总和。
* Example generated by -dataex-. To install: ssc install dataex
clear
input double packageid long CovenantType
4106 13
4106 18
4812 13
4952 2
5223 9
5287 18
7011 4
7011 13
7011 18
7849 17
10261 17
11057 4
11178 4
11178 13
11178 18
11452 17
11714 4
11714 13
11954 2
11954 13
11954 18
12807 13
12807 18
end
因此,例如,packageid 4106将具有cov_sum = 2,因为它具有两个CovenantType值13和18。
对于每种类型的契约,我已经创建了21个临时变量,分别为1或0,但是我不确定如何最后一步对每个packageid求和。
我知道它将创建重复的值,如下所示,但这没关系。
input double packageid long CovenantType long? cov_sum
4106 13 2
4106 18 2
如何创建一个与packageid中所有covenant类型之和的变量?
以下对我有用:
bysort packageid: generate n = _n
bysort packageid: egen cov_sum = max(n)
list, abbreviate(15)
+----------------------------------------+
| packageid CovenantType n cov_sum |
|----------------------------------------|
1. | 4106 13 1 2 |
2. | 4106 18 2 2 |
3. | 4812 13 1 1 |
4. | 4952 2 1 1 |
5. | 5223 9 1 1 |
|----------------------------------------|
6. | 5287 18 1 1 |
7. | 7011 4 1 3 |
8. | 7011 13 2 3 |
9. | 7011 18 3 3 |
10. | 7849 17 1 1 |
|----------------------------------------|
11. | 10261 17 1 1 |
12. | 11057 4 1 1 |
13. | 11178 4 1 3 |
14. | 11178 13 2 3 |
15. | 11178 18 3 3 |
|----------------------------------------|
16. | 11452 17 1 1 |
17. | 11714 4 1 2 |
18. | 11714 13 2 2 |
19. | 11954 2 1 3 |
20. | 11954 13 2 3 |
|----------------------------------------|
21. | 11954 18 3 3 |
22. | 12807 13 1 2 |
23. | 12807 18 2 2 |
+----------------------------------------+
bysort packageid : gen cov_sum = _N
似乎更直接。(您真的知道这一点...。)@NickCox,我想向OP展示步骤。