Calculate industry concentration in Stata based on four biggest numbers
由于我的问题与上一篇文章非常相关,我想生成一个变量,仅包括销量最大的前4家公司,其余的则排除在外。换句话说,新变量将仅具有给定行业中给定年份内销售额最大的4家公司的值,其余的将为“。”。
如果你能帮助我完成这个命令,我将不胜感激。
答案 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)
使用此示例,您可以运行,没有缺失值,结果是相同的。