簡體   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