使用R中的开始和结束日期打印订阅服务器

使用R中的开始和结束日期打印订阅服务器,r,ggplot2,R,Ggplot2,我希望使用开始日期和结束日期绘制订户随时间变化的频率 我有一个方法,为每个订户每天创建一行,然后计算每天的频率,然后按天绘制频率 这适用于小数据,但不能扩展到大订户数量,因为每个客户步骤的行太大 有没有有效的方法?非常感谢你的帮助 library(ggplot2) library(dplyr) # create dummy dataset subscribers <- data.frame(id = seq(1:10), start = sample(seq(as.Date('201

我希望使用开始日期和结束日期绘制订户随时间变化的频率

我有一个方法,为每个订户每天创建一行,然后计算每天的频率,然后按天绘制频率

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

有没有有效的方法?非常感谢你的帮助

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) 
库(ggplot2)
图书馆(dplyr)
#创建虚拟数据集
订阅者打印数据
ggplot(数据=绘图数据,
aes(x=日期,y=用户))+
几何线(尺寸=1.2,α=0.6)
这怎么样

library(tidyverse)
df <- subscribers %>%
  gather(key, value, start, end) %>%
  mutate(key = ifelse(key == "start",1,-1)) %>%
  arrange(value)

df$cum <- cumsum(df$key)  

ggplot(data = df,
       aes(x = value, y = cum)) +
  geom_step() 
库(tidyverse)
df%
聚集(键、值、开始、结束)%>%
变异(键=ifelse(键==“开始”,1,-1))%>%
排列(值)
df$cum这是怎么回事

library(tidyverse)
df <- subscribers %>%
  gather(key, value, start, end) %>%
  mutate(key = ifelse(key == "start",1,-1)) %>%
  arrange(value)

df$cum <- cumsum(df$key)  

ggplot(data = df,
       aes(x = value, y = cum)) +
  geom_step() 
库(tidyverse)
df%
聚集(键、值、开始、结束)%>%
变异(键=ifelse(键==“开始”,1,-1))%>%
排列(值)

df$cum真棒,非常感谢。我不确定它是如何工作的,但我想我现在明白了。它当然是在一个非常大的数据集上执行的。太棒了,非常感谢。我不确定它是如何工作的,但我想我现在明白了。它当然是在一个非常大的数据集上执行的。