R - 从大到小排名

问题描述 投票:0回答:7

我正在使用

Rank()
为数据帧分配排名值,但是我需要排名为 1 = 最高,而不是 1 = 最低。

r sorting dataframe
7个回答
46
投票

如果你想获得

x
从最大到最小的排名,请执行

rank(-x)

12
投票

或者你可以使用:

> x = c(1,2,3,4,5)
> rank(desc(x))
[1] 5 4 3 2 1

10
投票

此外,

order()
可以与负号一起使用:

> x = 1:10
> order(-x)
 [1] 10  9  8  7  6  5  4  3  2  1

3
投票

虽然

rank(-x)
肯定适用于数字和逻辑向量,但它不适用于字符向量,因为它们不能被否定。相反,一个适用于所有类型向量的解决方案:

rank(-rank(x))


1
投票

以下可以做到这一点:

order(x, decreasing=TRUE)

0
投票
x = c(1,2,3,4,5,6)
x[order(-x)]

你将会得到

6,5,4,3,2,1

-1
投票
ascending_order=arrange[order(arrange)]
Rank_values=rank(ascending_order)
© www.soinside.com 2019 - 2024. All rights reserved.