R中的等级和顺序

标签 r sorting r-faq

我无法理解 R 函数 rank 和 R 函数 order 之间的区别。它们似乎产生相同的输出:

> rank(c(10,30,20,50,40))
[1] 1 3 2 5 4
> order(c(10,30,20,50,40))
[1] 1 3 2 5 4

有人可以帮我解释一下吗? 谢谢

最佳答案

set.seed(1)
x <- sample(1:50, 30)    
x
# [1] 14 19 28 43 10 41 42 29 27  3  9  7 44 15 48 18 25 33 13 34 47 39 49  4 30 46  1 40 20  8
rank(x)
# [1]  9 12 16 25  7 23 24 17 15  2  6  4 26 10 29 11 14 19  8 20 28 21 30  3 18 27  1 22 13  5
order(x)
# [1] 27 10 24 12 30 11  5 19  1 14 16  2 29 17  9  3  8 25 18 20 22 28  6  7  4 13 26 21 15 23

rank 返回一个向量,其中包含每个值的“排名”。第一个位置的数字是倒数第 9 个。 order 返回将初始向量 x 按顺序排列的索引。

x 的第 27 个值是最低的,因此 27order(x) 的第一个元素 - 如果您查看rank(x),第 27 个元素是 1

x[order(x)]
# [1]  1  3  4  7  8  9 10 13 14 15 18 19 20 25 27 28 29 30 33 34 39 40 41 42 43 44 46 47 48 49

关于R中的等级和顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12289224/

相关文章:

arrays - PostgreSQL:对具有不同条件的多个 array_agg() 进行排序的最佳方法是什么?

javascript - 下划线将对象转换为数组并按键名排序

MySQL - 按 ID 自动排序不起作用

r - 将列表转换为数据框,同时保留列表元素名称

r - 对于每个 ID,返回 r 中起始列的最早日期和结束列的最晚日期

r - 使用 tidyeval tidyr 排除而不是包含收集变量

r - 如何按R中的另一个数据框对数据框中的列顺序进行排序?

r - 计算多个积分并绘制它们(使用 R)

将所有 0 值替换为 NA

删除重复行