我如何在STATA中对组内的观察结果进行排名? [英] How can I rank observations within groups in Stata?

查看:13
本文介绍了我如何在STATA中对组内的观察结果进行排名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Stata中有一些数据,它们看起来像下面的前两列:

group_id   var_to_rank  desired_rank
____________________________________

1           10          1
1           20          2
1           30          3
1           40          4
2           10          1
2           20          2
2           20          2
2           30          3

我想根据一个变量(Var_To_Ranch)为组(Group_Id)内的每个观测创建一个排名。为此,我通常使用:

gen id = _n

但是,我的一些观察结果(在我的小示例中,group_id=2)具有相同的排名变量值,此方法不起作用。

我也尝试过使用:

egen rank

带有不同选项的命令,但无法使我的排名变量看起来像Desired_RANK。

您能给我指出这个问题的解决方案吗?

推荐答案

我得说,为了更好地理解,这个问题问错了方向。这样做的目的是对观察结果进行分组,值最低的都被评为1级,其次最低的都被评为2级,以此类推。这并不是我见过的讨论过的大多数意义上的排名,但Stata的egen, rank()确实让你在这条路上走了一段路。

但是,在这个帖子(start here)中引用的Statist帖子中提到的直接方法在精神上比引用的任何解决方案都要简单:

bysort group_id (var_to_rank): gen desired_rank = sum(var_to_rank != var_to_rank[_n-1]) 
var_to_rank上对数据进行排序后,如果每个不同值块的开始处的值与以前的值不同,则var_to_rank != var_to_rank[_n-1]的结果为1;否则为0。将这些1和0累加得到所需的变量。前缀命令bysort执行所需的排序,并确保这些操作在group_id定义的组中单独完成。根本不需要egen(许多只使用Stata的人偶尔会觉得这个命令很奇怪)。

利益声明:引用的Statist帖子表明,当被问及类似的问题时,我也没有想到这个解决方案。

这篇关于我如何在STATA中对组内的观察结果进行排名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆