我有一个经常给慈善组织捐款的人的数据集,我试图计算新捐助者减去取消"订阅"的捐助者的总和。有些人还没有结束他们的订阅,因此在EndDate列中有NA。数据的结构如下:
Contact-ID StartDate EndDate
1 2021-09-01 2021-10-01
2 2021-09-01 2021-10-01
3 2021-10-01
4 2021-10-01 2021-11-01
从中有两个我正在寻找的输出。一个是表,它看起来像这样:
2021-09 2
2021-10 0
2021-11 -1
有什么建议吗?
你可以这样做
library(tidyverse)
df %>%
mutate(across(StartDate:EndDate, as.Date)) %>%
summarize(Month = seq(as.Date('2021-09-01'), as.Date('2021-11-01'),
by = 'month'),
users = sapply(Month, function(x) sum(StartDate <= x &
(EndDate > x | is.na(EndDate))))
)
#> Month users
#> 1 2021-09-01 2
#> 2 2021-10-01 2
#> 3 2021-11-01 1