使用R中的开始和结束日期绘制订阅者

时间:2017-08-03 05:38:40

标签: r ggplot2

我希望使用开始和结束日期绘制订阅者的频率。

我有一种方法可以为每个订阅者每天创建一行,然后计算每天的频率,然后按天绘制频率。

这适用于小型数据但不会扩展到大型订阅者数量,因为每个客户步骤的行数太大。

有一种有效的方法吗?非常感谢您的帮助。

library(ggplot2)
library(dplyr)

# create dummy dataset
subscribers <- data.frame(id = seq(1:10),
  start = sample(seq(as.Date('2016/01/01'), as.Date('2016/06/01'), by="day"), 10), 
  end   = sample(seq(as.Date('2017/01/01'), as.Date('2017/06/01'), by="day"), 10))

# creates a row for each day per user - OK for small datasets, but not scalable
date_map <- Map(seq, subscribers$start, subscribers$end, by = "day")
date_rows <- data.frame(
  org     = rep.int(subscribers$id,  vapply(date_map, length, 1L)), 
  date    = do.call(c, date_map))

# finds the frequency of users for each day
date_rows %>%
  group_by(date) %>%
  dplyr::summarise(users = n()) -> plot_data

ggplot(data = plot_data,
       aes(x = date, y = users)) +
  geom_line(size = 1.2,alpha = .6) 

Line plot of subscribers over time

1 个答案:

答案 0 :(得分:1)

这是怎么回事?

{{1}}