首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定两个日期间隔之间重叠的r函数-- DescTools区间函数

确定两个日期间隔之间重叠的r函数-- DescTools区间函数
EN

Stack Overflow用户
提问于 2020-04-22 21:42:50
回答 1查看 122关注 0票数 0

我正在寻找一种方法来确定两个日期间隔之间的重叠(以天为单位)。我有startdate1,enddate1,startdate2,enddate2列。我需要一个额外的列,其中包含间隔(startdate1、enddate1)和(startdate2,enddate2)之间重叠的天数。

例如,我想以这样的方式结束:

代码语言:javascript
复制
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函数来实现这一点:

代码语言:javascript
复制
df1$overlap<- Interval(as.Date(c(df1$startdate1, df1$enddate1)), as.Date(c(df1$startdate2, df1$enddate2)))

但我得到了错误:

as.Date.numeric(c(df1 1$startdate1,df1 1$enddate1)):必须提供“原产地”

我还研究了lubridate包--我使用了interval函数(不同于上面的DescTools区间)来创建列interval1和interval2,但是我不知道有一个函数可以计算它们之间重叠的天数。

任何帮助都是非常感谢的。提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-04-22 22:05:06

如果我正确理解,您可以通过从enddate1中减去startdate2来实现这一点。您可以使用基本的R函数(如as.Date() )来完成这一任务。

代码语言:javascript
复制
as.Date(enddate1, "%m/%d/%Y") - as.Date(startdate2, "%m/%d/%Y") + 1

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61375608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档