目标是选择/过滤数据帧中具有最大频率(出现次数)的前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
会很有用,但不知道如何做到这一点。有什么想法吗?
答案 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
,它是一个方便的包装器,使用filter
和min_rank
来选择顶部&#39; n&#39; (3)在“频率”中的观察列,并使用上面的ggplot
。
top_n(df, n=3, freq) %>%
ggplot(., aes(x=type, y=freq))+
geom_bar(stat='identity')