首页 > 解决方案 > 如何可视化 R 中分类变量的频率

问题描述

我的数据框中有 2 个变量,我正在尝试使用 ggplot 来绘制图形。在 x 轴上,我想要具有每日频率的日期。在 y 轴上,我想要在给定日期显示的唯一名称的计数。

变量在数据框中看起来像这样。

     Date           Name

1   2016-03-01      Joe
2   2016-03-01      Joe
3   2016-03-01      Joe 
4   2016-03-01      Mark
5   2016-03-01      Sue
6   2016-03-02      Mark    
7   2016-03-02      Joe
8   2016-03-03      Joe
9   2016-03-03      Joe
10  2016-03-03      Bill

因此,第一天 y 轴上的频率将显示 3,第二天显示 2,第三天显示 2。

我的问题是如何生成该图表。

标签: rggplot2

解决方案


Name计算每个唯一的数量Date,然后用geom_bar/绘制geom_col

library(dplyr)
library(ggplot2)
df %>%
  group_by(Date) %>%
  summarise(n = n_distinct(Name)) %>%
  ggplot()  + geom_col(aes(Date, n))
  #ggplot() + geom_bar(aes(Date, n), stat = "identity")

在此处输入图像描述

数据

df <- structure(list(Date = c("2016-03-01", "2016-03-01", "2016-03-01", 
"2016-03-01", "2016-03-01", "2016-03-02", "2016-03-02", "2016-03-03", 
"2016-03-03", "2016-03-03"), Name = c("Joe", "Joe", "Joe", "Mark", 
"Sue", "Mark", "Joe", "Joe", "Joe", "Bill")), class = "data.frame",
 row.names = c(NA, -10L))

推荐阅读