0
開始日と終了日を使用して時間の経過とともにサブスクライバの頻度をプロットしたいと考えています。開始日と終了日をRで指定しているユーザをプロットする
私はサブスクライバごとに1日ごとに行を作成し、次に1日の頻度を計算してから1日ごとに頻度をプロットする方法があります。
これは小さなデータでは問題ありませんが、顧客あたりの行のステップが大きすぎるため、大きな加入者番号に対応できません。
効率的な方法はありますか?助けてくれてありがとうございました。
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)
大変感謝しています。どのように働いているのか分かりませんでしたが、今理解していると思います。これは確かに非常に大きなデータセットで実行されます。 – Murray