次のような文字ベクトルがあります
c("white","white","blue","green","red","blue","red")
そして、次のような特定の順序
c("red","white","blue","green")
. 次のベクトルを取得するために、2 番目のベクトルの順序に従って最初のベクトルを並べ替えたいと思いますc("red","red","white","white","blue","blue", "green")
。最善の解決策は何ですか?
次のような文字ベクトルがあります
c("white","white","blue","green","red","blue","red")
そして、次のような特定の順序
c("red","white","blue","green")
. 次のベクトルを取得するために、2 番目のベクトルの順序に従って最初のベクトルを並べ替えたいと思いますc("red","red","white","white","blue","blue", "green")
。最善の解決策は何ですか?
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"
変数を適切な順序でレベルを持つ因子にします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))
結果を文字ベクトルとして本当に必要な場合に使用できます...