目标是选择/过滤数据框中频率(出现次数)最高的前 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 个类型
,然后使用条形图绘制它们。我认为 count
会很有用,但不确定该怎么做。有什么想法吗?
最佳答案
在我们根据“频率”列 (arrange(...)
) 对数据集进行排序后,我们可以使用 slice
对前 3 个值进行排序,使用 ggplot
,在aes
中指定'x'和'y'变量,并用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
来选择前“n”(3) 个观察值在“频率”列中并使用 ggplot
如上所述。
top_n(df, n=3, freq) %>%
ggplot(., aes(x=type, y=freq))+
geom_bar(stat='identity')
关于r - 使用 dplyr 选择并绘制最高频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32141332/