Как и reorder()
в ответе Алекса Брауна, мы также можем использовать forcats::fct_reorder()
.Он будет в основном сортировать факторы, указанные в 1-м аргументе, в соответствии со значениями во 2-м аргументе после применения указанной функции (по умолчанию = медиана, что мы и здесь используем, так как просто имеем одно значение на уровень фактора).
Обидно, что в вопросе OP требуемый порядок также является алфавитным, так как это порядок сортировки по умолчанию при создании факторов, поэтому он скрывает, что на самом деле делает эта функция.Чтобы было понятнее, я заменю «Вратарь» на «Зоокейпер».
library(tidyverse)
library(forcats)
theTable <- data.frame(
Name = c('James', 'Frank', 'Jean', 'Steve', 'John', 'Tim'),
Position = c('Zoalkeeper', 'Zoalkeeper', 'Defense',
'Defense', 'Defense', 'Striker'))
theTable %>%
count(Position) %>%
mutate(Position = fct_reorder(Position, n, .desc = TRUE)) %>%
ggplot(aes(x = Position, y = n)) + geom_bar(stat = 'identity')