【发布时间】:2020-04-22 21:42:50
【问题描述】:
我正在寻找一种方法来确定两个日期间隔之间的重叠(以天为单位)。我有列 startdate1、enddate1、startdate2、enddate2。我想要一个额外的列,其中包含间隔 (startdate1, enddate1) 和 (startdate2, enddate2) 之间的重叠天数。
例如,我想得到这样的结果:
startdate1 enddate1 startdate2 enddate2 overlap
1/1/2020 1/10/2020 1/6/2020 1/16/2020 5
1/15/2020 1/29/2020 1/6/2020 1/20/2020 6
1/15/2020 1/29/2020 1/17/2020 1/20/2020 4
我一直在尝试使用 DescTools 包中的 Interval 函数来实现这一点:
df1$overlap<- Interval(as.Date(c(df1$startdate1, df1$enddate1)), as.Date(c(df1$startdate2, df1$enddate2)))
但我收到错误错误:
as.Date.numeric(c(df1$startdate1, df1$enddate1)) : 'origin' 必须提供"
我还研究了 lubridate 包——我使用了间隔函数(不同于上面的 DescTools 间隔)来创建列 interval1 和 interval2,但我不知道有一个函数可以计算两者之间的重叠天数他们。
感谢任何帮助。提前致谢!
【问题讨论】:
标签: r intervals lubridate desctools