在R中,当条件满足时,如何计算日期之间的差异?

在R中,当条件满足时,如何计算日期之间的差异?,r,dataframe,date,R,Dataframe,Date,我有两个数据帧df1和df2,其中包含特定事件的开始日期和结束日期。我已经确定了哪些日期有重叠的事件,这里定义为df1中的开始日期在df2的开始和结束日期内。如果发生重叠,则标记为真;如果没有重叠,则标记为假。我想知道的是…当重叠为真时,我如何计算df2和df1中开始时间之间的差异 此代码确定是否存在重叠 df1$aa$Overlap <- df1$aa$date_start %in% unlist(Map(':', df2$bb$date_start, df2$bb$date_end))

我有两个数据帧df1和df2,其中包含特定事件的开始日期和结束日期。我已经确定了哪些日期有重叠的事件,这里定义为df1中的开始日期在df2的开始和结束日期内。如果发生重叠,则标记为真;如果没有重叠,则标记为假。我想知道的是…当重叠为真时,我如何计算df2和df1中开始时间之间的差异

此代码确定是否存在重叠

df1$aa$Overlap <- df1$aa$date_start %in% unlist(Map(':', df2$bb$date_start, df2$bb$date_end))
您可以看到有两个事件行1和3,其中重叠为真。我想做的是,当重叠等于TRUE时,确定df1和df2的date_start之间的时间差

我正在寻找的结果应该是这样的

    date_start  date_end    Site    Overlap   Diff
1   2002-04-13  2002-04-21  aa      TRUE      1
2   2002-08-13  2002-08-20  aa      TRUE      4

这将解决一些嵌套for循环的问题

设置df1 df1
df1$aa$Overlap <- df1$aa$date_start %in% unlist(Map(':', df2$bb$date_start, df2$bb$date_end))
> df1$aa
    date_start  date_end    Site    Overlap
1   2002-04-14  2002-04-21  aa      TRUE
2   2002-06-26  2002-07-05  aa      FALSE
3   2002-08-15  2002-08-20  aa      TRUE
4   2004-05-12  2004-05-19  aa      FALSE
    date_start  date_end    Site    Overlap   Diff
1   2002-04-13  2002-04-21  aa      TRUE      1
2   2002-08-13  2002-08-20  aa      TRUE      4