使用top_n后,R在管道期间丢失排序

时间:2019-09-14 15:26:55

标签: r

我有一个数据框,其列为word,我想用ggplot在条形图中显示文本中的前10个字。

这是代码:

text_df %>% count(word, sort = TRUE) %>% top_n(10)

结果符合预期。现在,我想在图形中显示出来:

text_df %>% count(word, sort = TRUE) %>% top_n(10) >%>
ggplot(aes(word, n)) + geom_col()

现在排序丢失了,十个单词以(对我来说)随机的顺序出现。为什么分类丢失?我会错误地使用命令吗?

1 个答案:

答案 0 :(得分:1)

首先,您的ggplot失去顺序的原因是因为ggplot期望输入作为具有水平的因子。

在绘制并发送到ggplot之前,使用fct_reorder库中的forcats可以对您面临的问题进行排序

library(forcats)
library(ggplot2)
temp %>% count(word, sort = TRUE) %>% top_n(10) %>% 
mutate(word=fct_reorder(word,-n)) %>%   
ggplot(aes(word, n)) + geom_col()