【发布时间】:2021-01-24 15:41:13
【问题描述】:
我有一张表格,其中包含在时间间隔(以开始日期和结束日期为界)执行活动的个人。他们中的一些人有几项活动,而另一些则没有。有时这些活动会重叠,有时它们会被一段时间的不活动分开。
我想按个人分组并计算他们活跃的月数,无论活动如何。
这是一个可重现的小例子:
df <- data.frame(id=c("x", "y", "y", "z", "z"),
activity=c("a1", "b1", "b2", "c1", "c2"),
start=c(as.Date("2017-07-01"),
as.Date("2018-04-01"), as.Date("2018-07-01"),
as.Date("2017-07-01"), as.Date("2018-02-01")),
end=c(as.Date("2018-07-31"),
as.Date("2018-05-31"), as.Date("2018-07-31"),
as.Date("2018-02-28"), as.Date("2018-07-31")))
有人能想到data.table 或dplyr 解决方案来获得以下输出吗?
id | active_months
x | 13
y | 3
z | 13
【问题讨论】:
-
Antoine,你不应该是 4 个活跃月吗?考虑从 4 月 1 日开始到 7 月 31 日结束的活动?
-
否,因为个人在 6 月份不活跃。
-
知道了,让我检查一下我的代码
标签: r date dplyr data.table lubridate