-1

我有一个变量ranking,它由许多不同大小的组组成,这些组都进行了排名。因此,一组可能是 1-6,下一个 1-4 和下一个 1-52。

我知道想要创建两个变量,分别将个人与他之上和之下的所有个人之间的差异相加。

对于一组 5 个人和个人 1 这意味着我想得到

上:和(1-1)=0 下:和((1-5)+(1-4)+(1-3)+(1-2))=-10

4

2 回答 2

3

这里似乎需要一些相当大的猜测。对排名差异求和似乎不太可能是您想要的,因为这些只是几个算术级数,不能提供有关数据的信息。

以下是可重现的,可能会有所帮助。

. sysuse auto, clear
. bysort rep78 (mpg) : gen rank = _n
. bysort rep78 (rank) : gen cuscore = sum(mpg)
. bysort rep78 (rank) : gen above = cuscore - mpg 
. bysort rep78 (rank) : gen below = cuscore[_N] - cuscore
于 2013-07-10T17:39:39.443 回答
0

谢谢尼克,

这实际上非常有帮助。我做了一些小的修改以获得我想要的东西,并检查它是否在数据窗口中工作。我很抱歉没有很好地表达我的问题并且没有提供玩具示例。

这是我修改后的答案,如果将来有人通过这篇文章发表评论

sysuse auto, clear
*just to have a better overview in the data window
keep mpg rep78
*creates ranking first by rep78 and within that by mpg
bysort rep78 (mpg) : gen rank = _n
*Sums mpg by rep78 and then by rank
bysort rep78 (rank) : gen cuscore = sum(rank)
*Create up as sum of the ranks minus individual rank 
bysort rep78 (rank) : gen up= cuscore - rank 
bysort rep78 (rank) : gen down= cuscore[_N] - cuscore 
于 2013-07-11T09:08:11.943 回答