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

Mit*_*ops 2 r ranking ranking-functions

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

> vec
[1]  1  1  2  5 10
Run Code Online (Sandbox Code Playgroud)

我正试图将其转换为一种非奥林匹克排名形式,其中关系仍然是关系,但排名保持1分,即使在它之上有多个关系,所以:

> f(vec)
[1]  1  1  2  3  4
Run Code Online (Sandbox Code Playgroud)

而不是:

> rank(vec,ties.method="min")
[1] 1 1 3 4 5
Run Code Online (Sandbox Code Playgroud)

是否有功能在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
Run Code Online (Sandbox Code Playgroud)

)

jor*_*ran 6

试试这个:

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

我意识到你现在提到了因素路线.就个人而言,我并不觉得它非常冒犯.

或者你可以达到factor自己的代码并做一些大致相当的事情:

match(vec,unique(vec))
Run Code Online (Sandbox Code Playgroud)

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

match(vec,sort(unique(vec)))
Run Code Online (Sandbox Code Playgroud)