2013-06-10 6 views
7

मैं एक चरित्र वेक्टर जोएक विशिष्ट क्रम के अनुसार एक चरित्र वेक्टर को सॉर्ट करने के लिए कैसे?

तरह
c("white","white","blue","green","red","blue","red") 

और एक विशेष क्रम जो की तरह

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

है लग रहा है मिल गया है। निम्नलिखित वेक्टर प्राप्त करने के लिए मैं दूसरे वेक्टर के क्रम के अनुसार पहले वेक्टर को सॉर्ट करना चाहता हूं: 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)) उपयोग कर सकते हैं यदि आप वास्तव में एक चरित्र वेक्टर के रूप में परिणाम चाहते हैं ...

संबंधित मुद्दे