2013-06-10 40 views
7

Tôi đã có một vector nhân vật trông giống nhưLàm thế nào để sắp xếp một vector ký tự theo một thứ tự cụ thể?

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

và một thứ tự cụ thể mà là giống như

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

. Tôi muốn sắp xếp các vector đầu tiên theo thứ tự của vector thứ hai để có được các vector sau đây: c("red","red","white","white","blue","blue", "green"). Giải pháp tốt nhất là gì?

Trả lời

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

Hãy biến bạn thành một yếu tố với các mức theo thứ tự thích hợp và 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 

Bạn có thể sử dụng x2 <- as.character(sort(f1)) nếu bạn thực sự muốn các kết quả như một vector nhân vật ...

Các vấn đề liên quan