楼主: 余杨
6986 14

[面板数据求助] 某个变量的前几个最大值计算均值并生成新的变量 [推广有奖]

11
andruw 在职认证  发表于 2015-6-16 04:36:11
  1. . input year sector var

  2.           year     sector        var
  3.   1.
  4. . 2001 1 3
  5.   2. 2001 1 4
  6.   3. 2001 1 5
  7.   4. 2001 1 2
  8.   5. 2001 1 6
  9.   6. 2001 1 7
  10.   7. 2001 2 4
  11.   8. 2001 2 3
  12.   9. 2001 2 6
  13. 10. 2001 2 8
  14. 11. 2001 2 10
  15. 12. 2001 2 9
  16. 13.
  17. . end

  18. .
  19. . list

  20.      +---------------------+
  21.      | year   sector   var |
  22.      |---------------------|
  23.   1. | 2001        1     3 |
  24.   2. | 2001        1     4 |
  25.   3. | 2001        1     5 |
  26.   4. | 2001        1     2 |
  27.   5. | 2001        1     6 |
  28.      |---------------------|
  29.   6. | 2001        1     7 |
  30.   7. | 2001        2     4 |
  31.   8. | 2001        2     3 |
  32.   9. | 2001        2     6 |
  33. 10. | 2001        2     8 |
  34.      |---------------------|
  35. 11. | 2001        2    10 |
  36. 12. | 2001        2     9 |
  37.      +---------------------+

  38. .
  39. . bysort year sector (var): gen n = _n

  40. .
  41. . list

  42.      +-------------------------+
  43.      | year   sector   var   n |
  44.      |-------------------------|
  45.   1. | 2001        1     2   1 |
  46.   2. | 2001        1     3   2 |
  47.   3. | 2001        1     4   3 |
  48.   4. | 2001        1     5   4 |
  49.   5. | 2001        1     6   5 |
  50.      |-------------------------|
  51.   6. | 2001        1     7   6 |
  52.   7. | 2001        2     3   1 |
  53.   8. | 2001        2     4   2 |
  54.   9. | 2001        2     6   3 |
  55. 10. | 2001        2     8   4 |
  56.      |-------------------------|
  57. 11. | 2001        2     9   5 |
  58. 12. | 2001        2    10   6 |
  59.      +-------------------------+

  60. .
  61. . bysort year sector (var): gen N = _N

  62. . list

  63.      +-----------------------------+
  64.      | year   sector   var   n   N |
  65.      |-----------------------------|
  66.   1. | 2001        1     2   1   6 |
  67.   2. | 2001        1     3   2   6 |
  68.   3. | 2001        1     4   3   6 |
  69.   4. | 2001        1     5   4   6 |
  70.   5. | 2001        1     6   5   6 |
  71.      |-----------------------------|
  72.   6. | 2001        1     7   6   6 |
  73.   7. | 2001        2     3   1   6 |
  74.   8. | 2001        2     4   2   6 |
  75.   9. | 2001        2     6   3   6 |
  76. 10. | 2001        2     8   4   6 |
  77.      |-----------------------------|
  78. 11. | 2001        2     9   5   6 |
  79. 12. | 2001        2    10   6   6 |
  80.      +-----------------------------+

  81. . replace n = N - n + 1
  82. (12 real changes made)

  83. . list

  84.      +-----------------------------+
  85.      | year   sector   var   n   N |
  86.      |-----------------------------|
  87.   1. | 2001        1     2   6   6 |
  88.   2. | 2001        1     3   5   6 |
  89.   3. | 2001        1     4   4   6 |
  90.   4. | 2001        1     5   3   6 |
  91.   5. | 2001        1     6   2   6 |
  92.      |-----------------------------|
  93.   6. | 2001        1     7   1   6 |
  94.   7. | 2001        2     3   6   6 |
  95.   8. | 2001        2     4   5   6 |
  96.   9. | 2001        2     6   4   6 |
  97. 10. | 2001        2     8   3   6 |
  98.      |-----------------------------|
  99. 11. | 2001        2     9   2   6 |
  100. 12. | 2001        2    10   1   6 |
  101.      +-----------------------------+

  102. . bysort year sector (n): egen var_sum = sum(var) if n <= 5
  103. (2 missing values generated)

  104. . list

  105.      +---------------------------------------+
  106.      | year   sector   var   n   N   var_sum |
  107.      |---------------------------------------|
  108.   1. | 2001        1     7   1   6        25 |
  109.   2. | 2001        1     6   2   6        25 |
  110.   3. | 2001        1     5   3   6        25 |
  111.   4. | 2001        1     4   4   6        25 |
  112.   5. | 2001        1     3   5   6        25 |
  113.      |---------------------------------------|
  114.   6. | 2001        1     2   6   6         . |
  115.   7. | 2001        2    10   1   6        37 |
  116.   8. | 2001        2     9   2   6        37 |
  117.   9. | 2001        2     8   3   6        37 |
  118. 10. | 2001        2     6   4   6        37 |
  119.      |---------------------------------------|
  120. 11. | 2001        2     4   5   6        37 |
  121. 12. | 2001        2     3   6   6         . |
  122.      +---------------------------------------+

  123. .
  124. . gen var_mean = var_sum/5
  125. (2 missing values generated)

  126. . list

  127.      +--------------------------------------------------+
  128.      | year   sector   var   n   N   var_sum   var_mean |
  129.      |--------------------------------------------------|
  130.   1. | 2001        1     7   1   6        25          5 |
  131.   2. | 2001        1     6   2   6        25          5 |
  132.   3. | 2001        1     5   3   6        25          5 |
  133.   4. | 2001        1     4   4   6        25          5 |
  134.   5. | 2001        1     3   5   6        25          5 |
  135.      |--------------------------------------------------|
  136.   6. | 2001        1     2   6   6         .          . |
  137.   7. | 2001        2    10   1   6        37        7.4 |
  138.   8. | 2001        2     9   2   6        37        7.4 |
  139.   9. | 2001        2     8   3   6        37        7.4 |
  140. 10. | 2001        2     6   4   6        37        7.4 |
  141.      |--------------------------------------------------|
  142. 11. | 2001        2     4   5   6        37        7.4 |
  143. 12. | 2001        2     3   6   6         .          . |
  144.      +--------------------------------------------------+

  145. .
  146. . bysort year sector: replace var_mean = var_mean[_n-1] if n > 1
  147. (2 real changes made)

  148. . list

  149.      +--------------------------------------------------+
  150.      | year   sector   var   n   N   var_sum   var_mean |
  151.      |--------------------------------------------------|
  152.   1. | 2001        1     7   1   6        25          5 |
  153.   2. | 2001        1     6   2   6        25          5 |
  154.   3. | 2001        1     5   3   6        25          5 |
  155.   4. | 2001        1     4   4   6        25          5 |
  156.   5. | 2001        1     3   5   6        25          5 |
  157.      |--------------------------------------------------|
  158.   6. | 2001        1     2   6   6         .          5 |
  159.   7. | 2001        2    10   1   6        37        7.4 |
  160.   8. | 2001        2     9   2   6        37        7.4 |
  161.   9. | 2001        2     8   3   6        37        7.4 |
  162. 10. | 2001        2     6   4   6        37        7.4 |
  163.      |--------------------------------------------------|
  164. 11. | 2001        2     4   5   6        37        7.4 |
  165. 12. | 2001        2     3   6   6         .        7.4 |
  166.      +--------------------------------------------------+
复制代码

12
andruw 在职认证  发表于 2015-6-16 04:36:52
复制代码

13
andruw 在职认证  发表于 2015-6-16 04:37:25
复制代码

14
余杨 发表于 2015-6-16 17:05:43
andruw 发表于 2015-6-15 22:49
谢谢啦,我已经解决了

15
sherrywoohh 发表于 2017-6-2 20:25:15
余杨 发表于 2015-6-15 20:29
你好,这个命令bysort sector year: replace var_mean = var_mean[_n-1] if n > 1是不是有问题呢?我运行 ...
请问您是怎么解决这个问题哒?我不知道怎么给这些缺失值赋值

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-31 15:40