繁体   English   中英

R function 确定两个日期间隔之间的重叠 — DescTools Interval Function

[英]R function to determine the overlap between two date intervals — DescTools Interval Function

我正在寻找一种方法来确定两个日期间隔之间的重叠(以天为单位)。 我有列 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 package 的间隔 function 来实现这一点:

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 包——我使用了间隔 function(不同于上面的 DescTools 间隔)来创建列 interval1 和 interval2,但我不知道可以计算它们之间重叠天数的 function。

任何帮助表示赞赏。 提前致谢!

如果我理解正确,您可以通过简单地从startdate2中减去enddate1来实现。 您可以使用诸如as.Date()之类的基本R函数来执行此操作:

as.Date(enddate1, "%m/%d/%Y") - as.Date(startdate2, "%m/%d/%Y") + 1

字符串%m/%d/%Y指定日期的格式,在您的情况下为月/日/年。 我添加+1是因为上面计算了日期之间的差异(如10 - 6 = 4 ),不包括开始日期,而为了获得重叠,我们还想计算开始日期本身。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM