Как интегрировать функцию переупорядочения в конвейер dplyr? - PullRequest
0 голосов
/ 21 октября 2019

Я работаю над некоторыми упражнениями, которые просят интегрировать reorder как часть конвейера dplyr. Я не узнал, как, однако. Мне просто нужно использовать альтернативное решение с arrange, например,

# The `errors` data have already been loaded. Examine them using the `head` function.
head(errors)

# Create a boxplot showing the errors by state for polls with grades B+ or higher
errors %>% filter(grade %in% c("A+", "A", "A-", "B+")) %>% 
    arrange(error) %>% ggplot(aes(x=state,y=error)) + geom_boxplot() + geom_point()

. Я использую функцию arrange таким образом, и она проходит грейдер, таким образом, выстраивая все результаты ASC по ошибке, но я не могуузнайте, как интегрировать функцию reorder в этот конвейер и выполнить сценарий использования сортировки по ошибке.

Кроме того, ggplot, похоже, не выбирает правильное переупорядочение данных.

1 Ответ

1 голос
/ 21 октября 2019

Это работает, потому что ваше решение логичное, но не правильное.

ggplot2 не меняет результирующий график, потому что его не волнует порядок строк в данных.frame / tibble.

Чтобы изменить порядок точек данных на вашем графике, вы должны изменить порядок факторов в наборе данных. Вы можете сделать это, используя library(forcats). Следующий фрагмент кода может вам помочь.

            errors %>% 
        filter(grade %in% c("A+", "A", "A-", "B+")) %>%  
        mutate(error = forcats::fct_reorder(error, grades)) %>% #here I'm reordering the factors of the error column based in the grade column.
 ggplot(aes(x=state,y=error)) + geom_boxplot() + geom_point()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...