2013-07-19 84 views
8

我有一个整数向量比方说从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 

但我需要2秒一次去,然后1秒,然后三分。

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

所以,如果我有一个载体y = c(2, 1, 3),我怎么可以使用它的排列顺序?

而实际上我不需要值本身,而是分类值的原始矢量指数,当我从order功能得到。

+0

1是数字一直到N? – Arun

+0

对我来说,是的。 – yuk

回答

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 
+0

太棒了!谢谢! – yuk

8

一个有点令人费解的选项:

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

或很明显,只是order呼吁只是指数。

+0

谢谢!很棒。我认为'as.integer'没有必要。对? – yuk

+0

@yuk是的,我相信你是正确的。 – joran