按特定(自定义)顺序排序整数向量

时间:2013-07-19 17:14:38

标签: r sorting vector

我有一个整数向量,让我们说从1到3(可以更多):

x <- sample(1:3, 10, replace=T)

[1] 1 3 1 2 2 1 3 2 3 2

如果我排序x我会得到

sort(x)
[1] 1 1 1 2 2 2 2 3 3 3

但我先需要2s,然后是1s,然后是3s。

[1] 2 2 2 2 1 1 1 3 3 3

那么,如果我有一个向量y = c(2, 1, 3),我如何使用它来排序顺序?

实际上我不需要值本身,而是原始向量中的排序值索引,就像我从order函数得到的那样。

2 个答案:

答案 0 :(得分:8)

有点复杂的选择:

x[order(factor(x,levels = c(2,1,3)))]

或者很明显,只需要order调用索引。

答案 1 :(得分:7)

简单重新映射值有效:

x <- sample(1:3, 10, replace=T)
x
 [1] 2 3 1 1 3 2 2 3 3 2
order(c(2,1,3)[x])
 [1]  1  6  7 10  3  4  2  5  8  9