【发布时间】:2020-06-15 20:11:01
【问题描述】:
我有两个数据框(df1 和 df2),其中包含某些事件的开始日期和结束日期。我已经确定了哪些日期有重叠事件,这里定义为在df1 中的开始日期在df2 的开始和结束日期之内。如果发生重叠,则将它们标记为TRUE,如果没有重叠,则将它们标记为FALSE。我想知道的是...当Overlap 是TRUE 时,我如何计算df2 和df1 的开始时间之间的差异?
> df1$aa
date_start date_end Site
1 2002-04-14 2002-04-21 aa
2 2002-06-26 2002-07-05 aa
3 2002-08-15 2002-08-20 aa
4 2004-05-12 2004-05-19 aa
> df2$bb
date_start date_end Site
1 2002-04-13 2002-04-19 bb
2 2002-08-11 2002-08-19 bb
3 2005-06-09 2005-06-14 bb
4 2005-08-10 2005-08-14 bb
这段代码判断是否有重叠
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
您可以看到有两个事件(第 1 行和第 3 行),其中 Overlap 是 TRUE。当Overlap等于TRUE时,我想做的是确定date_start与df1和df2之间的时间差(Diff)。
我正在寻找的结果应该是这样的。
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
【问题讨论】: