Stata中如何按State、ServiceType分组实现各州内年度数据总和排名
问题原因
你原有写法的问题出在分组层级和求和逻辑上:用bys State ServiceCategory分组时,求和和排名的范围被限制在了每个州+单类服务的最细分组下,自然无法实现「先按州+服务类型求和、再单州内跨服务类型排名」的需求。
实现步骤
1. 先计算单州内单类服务的多年度指标总和
用egen的total()函数完成分组求和,确保同一州、同一服务类型下所有年度的观测都会得到相同的总和值:
bys State ServiceType: egen total_quant = total(quant_variable)
如果你实际的服务类型变量名是ServiceCategory,直接替换代码里的ServiceType即可。
2. 单州内部按总和排名
排名时指定分组维度仅为State,就可以保证排名只在州内生效,不会跨州比较:
* 降序排名:总和越高排名越靠前,并列排名相同、后续排名跳位 egen rank_quant = rank(total_quant), by(State) field descending
如果需要调整并列规则,替换field选项即可:
- 替换为
track:并列排名相同、后续排名连续(比如两个第1名,下一名是第2) - 替换为
unique:即使数值相同也给独立排名,按观测顺序区分优先级
如果不需要保留中间的总和变量,运行完排名代码后可以删除:
drop total_quant
内容的提问来源于stack exchange,提问作者dpratt
相关产品推荐
相关产品推荐

