У меня есть вектор, который выглядит примерно так:
> 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
)