使用dplyr选择并绘制顶部频率

时间:2015-08-21 13:18:05

标签: r select ggplot2 count dplyr

目标是选择/过滤数据帧中具有最大频率(出现次数)的前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 

期望的结果是仅选择前3 types,然后使用条形图绘制这些。我认为count会很有用,但不知道如何做到这一点。有什么想法吗?

1 个答案:

答案 0 :(得分:5)

我们根据&#39; freq&#39;订购数据集后列(arrange(...)),我们可以使用slice获得前3个值,使用ggplot,指定&#39; x&#39;并且&#39; y&#39; 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来选择顶部&#39; n&#39; (3)在“频率”中的观察列,并使用上面的ggplot

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

enter image description here