变量排名不会跳过R中的位置

时间:2014-03-13 01:09:41

标签: r ranking ranking-functions

我有一个看起来像这样的矢量:

> vec
[1]  1  1  2  5 10

我试图将此转换为一种非奥林匹克排名形式,其中关系仍然是关系,但排名保证相隔1,即使上面有多个关系,所以:

> f(vec)
[1]  1  1  2  3  4

而不是:

> rank(vec,ties.method="min")
[1] 1 1 3 4 5

R中是否有这样做的功能?我知道我可以将值转换为因子然后对因子进行排名,但这看起来有点迂回。 (如果不是函数,是否有这种排名的名称?)

(好吧:我之前没有注意到这一点,但看起来排名是幂等的,这有点酷:

> rank(vec,ties.method="min")
[1] 1 1 3 4 5
> rank(rank(vec,ties.method="min"),ties.method="min")
[1] 1 1 3 4 5

1 个答案:

答案 0 :(得分:5)

试试这个:

vec <- c(1,1,2,5,10)
> as.integer(factor(vec))
[1] 1 1 2 3 4

我意识到你现在提到了因素路线。就个人而言,我并不觉得它非常具有攻击性。

或者你可以在factor本身的代码中找到并做一些大致相当的事情:

match(vec,unique(vec))

但是假设vec已经排序,所以也许你真的需要做类似的事情

match(vec,sort(unique(vec)))