Select 并使用 dplyr 绘制最高频率

Select and plot top frequencies with dplyr

objective 是 select/filter 在数据框中具有最大频率(出现)的前 3(或 n)个事件,然后使用 ggplot2 中的条形图绘制这些事件。

例子:

library(dplyr)
df <- data.frame(
  type=c("car","bike","horse","boat","yacht","train"),freq=c(20,2,5,60,11,10))

到目前为止,我可以安排 df:

df_order <- df %>% 
            arrange(desc(freq))
[1] df_order
type freq
1  boat   60
2   car   20
3 yacht   11
4 train   10
5 horse    5
6  bike    2 

期望的结果是 select 只有前 3 个 types 然后使用条形图绘制它们。我认为 count 会有用,但不确定该怎么做。有什么想法吗?

在我们根据 'freq' 列 (arrange(...)) 对数据集进行排序后,我们可以使用 slice 的前 3 个值,使用 ggplot,指定 'x' 和 'y' 变量在 aes 中,并用 geom_bar

绘制条形图
 library(ggplot2)
 library(dplyr)
 df %>% 
    arrange(desc(freq)) %>%
    slice(1:3) %>%
    ggplot(., aes(x=type, y=freq))+
              geom_bar(stat='identity')

或者另一个选项是 top_n,它是一个方便的包装器,它使用 filtermin_rank 到 select 顶部 'n' (3) 中的观察'freq' 列并使用 ggplot 如上所述。

top_n(df, n=3, freq) %>%
          ggplot(., aes(x=type, y=freq))+
              geom_bar(stat='identity')