Переупорядочиваемая факторная (порядковая) переменная в порядке возрастания - PullRequest
0 голосов
/ 28 ноября 2018

Давайте предположим, что в моем фрейме данных есть переменная, которая выглядит следующим образом:

x <- rep(seq(10, 50, by = 10), each = 20) %>% factor() %>% forcats::fct_shuffle()

Теперь я хочу изменить порядок уровней в порядке возрастания.Теоретически, я мог бы просто использовать factor снова и определять уровни вручную:

factor(x, levels = c(10, 20, 30, 40, 50))

, но в долгосрочной перспективе это кажется громоздким, с потенциально гораздо большим количеством уровней.Так как мне изменить порядок уровней в порядке возрастания?

1 Ответ

0 голосов
/ 28 ноября 2018

Может быть:

factor(x, levels =  sort(levels(x)))

# [1] 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
# [41] 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
# [81] 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50
# Levels: 10 20 30 40 50

С forcats:

forcats::fct_inorder(x)

Данные:

x <- rep(seq(10, 50, by = 10), each = 20) %>% factor() %>% forcats::fct_shuffle()
...