生成一个变量,仅包括销量最大的前4家公司

时间:2017-05-04 13:09:15

标签: stata sales

Calculate industry concentration in Stata based on four biggest numbers

由于我的问题与上一篇文章非常相关,我想生成一个变量,仅包括销量最大的前4家公司,其余的则排除在外。换句话说,新变量将仅具有给定行业中给定年份内销售额最大的4家公司的值,其余的将为“。”。

如果你能帮助我完成这个命令,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

没有数据示例,没有尝试代码;但问题很清楚。

考虑一下:

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

如果您缺少值,他们会排序到每个块的末尾并弄乱结果。所以你需要更多的技巧:

gen 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) 

使用此示例,您可以运行,没有缺失值,结果是相同的。