[英]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.