Stata - 分年度-行业计算销售额前四名的行业占比
作者:连玉君 (知乎 | 简书 | 码云)
Stata连享会 精彩推文1 || 精彩推文2
一起学空间计量……
1. 问题
在 Stata 中如何分年度计算一个行业当中排名前四位的公司的总收入占整个行业的收入比重?
Note: 如果是算一般的赫芬达尔指数,可以使用连玉君老师编写的 hhi5
命令,很便捷。安装命令的方法为:在 Stata 命令窗口中执行 ssc install hhi5, replace
即可。
本例的情况稍微特殊一些,需要自己写命令,但核心思路与 hhi5
是一样的。有兴趣的读者可以使用 adoedit hhi5.ado
打开 hhi5
命令的原始 ado 文件,以便知晓内部计算思路和过程。
2. 解决方法
我们先自行模拟生成一份 Panel data 数据。自己操作时,换用自己的数据即可。
2.1 自行模拟生成一份数据
*---
*-A: Data Generation: simulation
clear
set obs 50 // N=50 家
gen id = _n
egen industry = cut(id), at(1(10)55) // 行业
expand 4 // T=4 年
bysort id: gen year = _n + 2010
xtset id year
gen sale = int(100+rnormal()*20)
生成的数据长这样:
. gsort year industry -sale
. list in 1/20, sepby(year industry) noobs
+-----------------------------+
| id industry year sale |
|-----------------------------|
| 10 1 2011 137 |
| 1 1 2011 119 |
| 6 1 2011 102 |
| 4 1 2011 99 |
| 3 1 2011 97 |
| 2 1 2011 97 |
| 9 1 2011 96 |
| 7 1 2011 85 |
| 8 1 2011 84 |
| 5 1 2011 82 |
|-----------------------------|
| 11 11 2011 135 |
| 15 11 2011 134 |
| 20 11 2011 133 |
| 12 11 2011 119 |
| 13 11 2011 117 |
| 16 11 2011 104 |
| 17 11 2011 101 |
| 19 11 2011 95 |
| 14 11 2011 93 |
| 18 11 2011 88 |
+-----------------------------+
2.2 计算目标变量
*---
*-B: The percentage
gsort year industry -sale
bysort year industry: gen sale123 = _n //排序
list in 1/20, sepby(year industry) noobs
*-行业总收入
bysort year industry: egen sale_ind = total(sale)
*-Top 4
bysort year industry: egen sale_top4 = total(sale) if sale123<=4
*-Ratio
gen ratio4_temp = sale_top4/sale_ind
*-expand
bysort year industry: egen ratio4 = min(ratio4_temp)
最终的数据长这样:
. list in 1/20, sepby(year industry) noobs
+-------------------------------------------------------------------------------------+
| id industry year sale sale123 sale_ind sale_t~4 ratio4_~p ratio4 |
|-------------------------------------------------------------------------------------|
| 5 1 2011 130 1 1016 498 .49015748 .49015748 |
| 7 1 2011 125 2 1016 498 .49015748 .49015748 |
| 3 1 2011 124 3 1016 498 .49015748 .49015748 |
| 9 1 2011 119 4 1016 498 .49015748 .49015748 |
| 10 1 2011 106 5 1016 . . .49015748 |
| 4 1 2011 95 6 1016 . . .49015748 |
| 2 1 2011 86 7 1016 . . .49015748 |
| 1 1 2011 83 8 1016 . . .49015748 |
| 6 1 2011 74 9 1016 . . .49015748 |
| 8 1 2011 74 10 1016 . . .49015748 |
|-------------------------------------------------------------------------------------|
| 18 11 2011 130 1 984 493 .50101626 .50101626 |
| 15 11 2011 126 2 984 493 .50101626 .50101626 |
| 19 11 2011 124 3 984 493 .50101626 .50101626 |
| 17 11 2011 113 4 984 493 .50101626 .50101626 |
| 13 11 2011 110 5 984 . . .50101626 |
| 16 11 2011 92 6 984 . . .50101626 |
| 14 11 2011 91 7 984 . . .50101626 |
| 11 11 2011 86 8 984 . . .50101626 |
| 12 11 2011 68 9 984 . . .50101626 |
| 20 11 2011 44 10 984 . . .50101626 |
+-------------------------------------------------------------------------------------+
3. 其他解决方法
当然,还有其他解决方法,或许更为简洁。若有,请在下方留言或发邮件至 arlionn@163.com。
关于我们
【Stata 连享会(公众号:StataChina)】由中山大学连玉君老师团队创办,旨在定期与大家分享 Stata 应用的各种经验和技巧。
公众号推文同步发布于 【简书-Stata连享会】 和 【知乎-连玉君Stata专栏】。可以在简书和知乎中搜索关键词
Stata
或Stata连享会
后关注我们。推文中的相关数据和程序,以及 Markdown 格式原文 可以在 【Stata连享会-码云】 中获取。【Stata连享会-码云】 中还放置了诸多 Stata 资源和程序。如 Stata命令导航 || stata-fundamentals || Propensity-score-matching-in-stata || Stata-Training 等。
联系我们
欢迎赐稿: 欢迎将您的文章或笔记投稿至
Stata连享会(公众号: StataChina)
,我们会保留您的署名;录用稿件达五篇
以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。意见和资料: 欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。
招募英才: 欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
联系邮件: StataChina@163.com
往期精彩推文