У меня есть вектор строк, который я хочу отсортировать по определенному порядку уровней.
Это порядок моих уровней:
x <- c("green", "red", "orange", "blue", "yellow")
и я хочу упорядочить свой вектор строк: y <- c("yellow", "orange")
на основе порядка моих уровней по x.
Итак, y
должен вернуть c("orange", "yellow")
.
Спасибо. Любая помощь приветствуется.
Обновлено: спасибо за ответы. Я также придумал x[x %in% y]
для возможного решения
Вы можете сделать это, сделав y упорядоченным множителем, а затем просто отсортировав.
x <- c("green", "red", "orange", "blue", "yellow")
set.seed(1066)
y = factor(sample(x, 5, replace=T), levels=x, ordered=T)
y
[1] red blue blue red green
Levels: green < red < orange < blue < yellow
sort(y)
[1] green red red blue blue
Levels: green < red < orange < blue < yellow
y[match(x, y, nomatch = 0L)]