示例数据如文末所示,假设有17个城市(city_id),两个月(month)的数据。要研究的变量是重污染天数(polluted_day)。
现希望按月对17个城市的重污染天数进行排名。
已经使用了如下命令,生成了一个排名变量:
- by month, sort: egen rank=rank(polluted_day)
但现在在对并列个体的排名处理上出现了问题。
stata提供的rank函数只有四种排名方式:默认、field、track、unique。分别对应:由小到大排序,并将并列值取所有排序值的均值;由大到小,并将并列值取最大值;由小到大,并将重复值取最小值;从小到大,并将重复值随机分配。
这四种分类方式均不能满足我的要求。这四类排序方法均会使排序的最大值等于截面样本个数。以70 80 90 90 100五个值为例,上述四种排序方法的结果依次是:1 2 3.5 3.5 5 ;5 4 3 3 1; 1 2 3 3 5; 1 2 4 3 5。我不希望并列值占用后续个体的排名,我希望的结果是:1 2 3 3 4。
尝试了用group函数加_n的编号方法,但也不成功,因为无法使用by命令。
希望获得解答,得到如上排序结果!
以下为部分数据展示。
- *clear
- input byte(city_id polluted_day month) float rank
- 1 7 1 12
- 2 17 1 3
- 3 9 1 7
- 4 9 1 7
- 5 14 1 5
- 6 19 1 2
- 7 11 1 6
- 8 3 1 17
- 9 9 1 7
- 10 25 1 1
- 11 15 1 4
- 12 9 1 7
- 13 7 1 12
- 14 6 1 15
- 15 6 1 15
- 16 8 1 11
- 17 7 1 12
- 1 7 2 16
- 2 21 2 3
- 3 11 2 12
- 4 11 2 12
- 5 13 2 5
- 6 22 2 2
- 7 12 2 6
- 8 6 2 17
- 9 12 2 6
- 10 25 2 1
- 11 15 2 4
- 12 9 2 15
- 13 12 2 6
- 14 12 2 6
- 15 12 2 6
- 16 12 2 6
- 17 11 2 12
- end
初次发帖,如有不当,还请见谅!
希望获得高手指教!


雷达卡





京公网安备 11010802022788号







