并列值不占用排名的排序方法

参考:https://bbs.pinggu.org/thread-7797826-1-1.html

比如识别变量是stkcd year,我想对每年所有城市的y指标进行排序,如果单纯地使用:

bysort year: egen ranky = rank(y),field

就会导致同一个城市的不同stkcd会占用同一个有序数意义的排名,导致最后的排名数远超于城市数,也就是说,如果200个城市有3000个stkcd,若这么写代码,最后ranky的最大值是3000,而不是城市总数200。
怎么办呢?

cap program drop temp_rank
program define temp_rank  
gen a = -y     //从大到小排序
  egen rank_y = group(a)
end

runby temp_rank, by(year)
sort city year rank_y
order city year OV65 rank_y
posted @ 2022-04-13 17:35  将军练码  阅读(191)  评论(0)    收藏  举报