我希望使用开始和结束日期绘制订阅者的频率。
我有一种方法可以为每个订阅者每天创建一行,然后计算每天的频率,然后按天绘制频率。
这适用于小型数据但不会扩展到大型订阅者数量,因为每个客户步骤的行数太大。
有一种有效的方法吗?非常感谢您的帮助。
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)
答案 0 :(得分:1)
这是怎么回事?
{{1}}