Stata 生成一个变量,仅包括销售额最高的前4家公司

Stata 生成一个变量,仅包括销售额最高的前4家公司,stata,Stata,我的问题与下面的问题非常相关: 我只想生成一个变量,其中包括销售额最大的前4家公司,不包括其他公司 换言之,新变量的值将仅为给定行业中某一年销售额最大的4家公司的值,其余将为考虑以下因素: webuse grunfeld, clear bysort year (invest) : gen largest4 = cond(_n < _N - 3, ., invest) sort year invest list year largest4 if largest4 < . in

我的问题与下面的问题非常相关:

我只想生成一个变量,其中包括销售额最大的前4家公司,不包括其他公司

换言之,新变量的值将仅为给定行业中某一年销售额最大的
4家公司的值,其余将为
考虑以下因素:

webuse grunfeld, clear
bysort year (invest) : gen largest4 = cond(_n < _N - 3, ., invest) 
sort year invest 
list year largest4 if largest4 < . in 1/40, sepby(year) 

     +-----------------+
     | year   largest4 |
     |-----------------|
  7. | 1935      39.68 |
  8. | 1935      40.29 |
  9. | 1935      209.9 |
 10. | 1935      317.6 |
     |-----------------|
 17. | 1936      50.73 |
 18. | 1936      72.76 |
 19. | 1936      355.3 |
 20. | 1936      391.8 |
     |-----------------|
 27. | 1937      74.24 |
 28. | 1937       77.2 |
 29. | 1937      410.6 |
 30. | 1937      469.9 |
     |-----------------|
 37. | 1938       51.6 |
 38. | 1938      53.51 |
 39. | 1938      257.7 |
 40. | 1938      262.3 |
     +-----------------+
webuse-grunfeld,清除
按年份(投资):最大发电量4=秒(投资)
分类年投资
如果最大年份4<,则列出最大年份4。在1/40,九月(年)
+-----------------+
|最大年份4|
|-----------------|
7. | 1935      39.68 |
8. | 1935      40.29 |
9. | 1935      209.9 |
10. | 1935      317.6 |
|-----------------|
17. | 1936      50.73 |
18. | 1936      72.76 |
19. | 1936      355.3 |
20. | 1936      391.8 |
|-----------------|
27. | 1937      74.24 |
28. | 1937       77.2 |
29. | 1937      410.6 |
30. | 1937      469.9 |
|-----------------|
37. | 1938       51.6 |
38. | 1938      53.51 |
39. | 1938      257.7 |
40. | 1938      262.3 |
+-----------------+
如果缺少值,它们将排序到每个块的末尾,并将结果弄乱

所以你需要更多的技巧:

generate OK = !missing(invest) 
bysort OK year (invest) : gen Largest4 = cond(_n < _N - 3, ., invest) if OK 
sort year invest 
list year Largest4 if Largest4 < . in 1/40, sepby(year) 
生成OK=!失踪(投资)
bysort OK year(invest):gen Largest4=秒(n
对于这个可以运行的示例,没有缺少值,结果是相同的