2013-06-10 16 views
7

私は特定の順序に従って文字ベクトルをソートする方法は?

c("white","white","blue","green","red","blue","red") 

c("red","white","blue","green") 

のようなものである特定の順序のように見える文字ベクトルを持っています。私は、次のベクトルを得るために、第2のベクトルの次数に従って第1のベクトルをソートしたい:c("red","red","white","white","blue","blue", "green")。 ベストソリューションは何ですか?

答えて

14
x <- c("white","white","blue","green","red","blue","red") 
y <- c("red","white","blue","green") 
x[order(match(x, y))] 
# [1] "red" "red" "white" "white" "blue" "blue" "green" 
2

は、適切な順序でのレベルとsort()を要因にあなたの変数を作成します。

x1 <- c("white","white","blue","green","red","blue","red") 
ord <- c("red","white","blue","green") 
f1 <- factor(x1,levels=ord) 
sort(f1) 
## [1] red red white white blue blue green 
## Levels: red white blue green 

あなたが本当に文字ベクトルとして結果をしたい場合は、x2 <- as.character(sort(f1))を使用することができます...