温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Stata: Calculate sum of any x in y?
stata

其他 - Stata:计算y中x的总和?

发布于 2020-05-22 11:30:15

我有两个变量:

  1. 一个称为packageid(公司贷款的唯一ID号)
  2. 另一个称为ConventType,其值为1到21,每个值表示一种契约(贷款)类型。

我想创建一个新的变量(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类型之和的变量?

查看更多

提问者
nr1
被浏览
19
Pearly Spencer 2020-03-05 18:30

以下对我有用:

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 |
     +----------------------------------------+