按月计算分类变量的频率ggplot2

时间:2018-03-27 16:41:39

标签: r ggplot2 time-series frequency

以下是我正在使用的数据示例:

   SMUGGLING VIOLENCE AUXILIARY      Month
        Yes       No        No 2017-07-01
        Yes       No       Yes 2017-03-01
        Yes       No        No 2017-05-01
        Yes       No        No 2017-02-01
        Yes     <NA>      <NA> 2016-02-01

我试图描绘走私的频率==“是”随着时间的推移(按月,2016-2017)。所以我只想在y轴上进行SMUGGLING的频率(我已经将其子集化为取出No),并在x轴上逐月进行。

这是我的代码:

ggplot(data = smugglingyes,
   aes(Month, SMUGGLING)) +
  stat_summary(fun.y = sum, 
           geom = "line") +
  scale_x_date(date_labels="%Y-%m", date_breaks = "1 month")

This只是我从ggplot2获得的输出的一个粗略示例(一旦我找到正确的图表方法,它将被清理)。

我很困惑,如果这是显示计数,因为这是我认为代码的stat_summary部分会做的,但是y轴上的“是”会误导我,并且没有y轴上的任何数字。知道如何修复此图表吗?

1 个答案:

答案 0 :(得分:1)

为什么不在传递给ggplot之前聚合呢? E.g。

library(tidyverse)
df <- data.frame(Smuggling = "Yes", 
                 Violence = "No",
                 Auxiliary = c("No", "Yes", "No", "No", NA),
                 Month = c("2017-07-01", "2017-03-01", "2017-05-01", "2017-02-01", "2016-02-01"))

df %>% 
  mutate(Month = lubridate::ymd(Month)) %>% 
  count(Month) %>%
  ggplot(aes(x = Month, y = n)) + geom_line()