【发布时间】:2018-06-02 22:33:31
【问题描述】:
编辑(2019-06):这个问题不再存在,因为this issue 已经关闭并实现了相关功能。如果您现在使用更新的包运行代码,它将起作用。
我试图找到重叠的区间,并决定将区间数据与dplyr::left_join() 连接起来,这样我就可以将lubridate::int_overlaps() 的区间与具有相同ID 的所有其他区间进行比较。
这就是我期望left_join() 的行为方式。三行的两个小标题交叉形成一个有 9 行的tibble:
library(tidyverse)
tibble(a = rep("a", 3), b = rep(1, 3)) %>%
left_join(tibble(a = rep("a", 3), c = rep(2, 3)))
Joining, by = "a"
# A tibble: 9 x 3
a b c
<chr> <dbl> <dbl>
1 a 1 2
2 a 1 2
3 a 1 2
4 a 1 2
5 a 1 2
6 a 1 2
7 a 1 2
8 a 1 2
9 a 1 2
以下是相同代码在间隔中的行为方式。我得到了九行,但这些行不像上面那样交叉:
tibble(a = rep("a", 3), b = rep(make_date(2001) %--% make_date(2002), 3)) %>%
left_join(tibble(a = rep("a", 3), c = rep(make_date(2002) %--% make_date(2003))))
Joining, by = "a"
# A tibble: 9 x 3
a b c
<chr> <S4: Interval> <S4: Interval>
1 a 2001-01-01 UTC--2002-01-01 UTC 2002-01-01 UTC--2003-01-01 UTC
2 a 2001-01-01 UTC--2002-01-01 UTC 2002-01-01 UTC--2003-01-01 UTC
3 a 2001-01-01 UTC--2002-01-01 UTC 2002-01-01 UTC--2003-01-01 UTC
4 a NA--NA NA--NA
5 a NA--NA NA--NA
6 a NA--NA NA--NA
7 a NA--NA NA--NA
8 a NA--NA NA--NA
9 a NA--NA NA--NA
我认为这是出乎意料的,但我可能遗漏了什么?或者它是一个错误?
【问题讨论】:
-
我可以通过在加入之前不将开始日期和结束日期转换为间隔来解决这个问题。
标签: tibble lubridate tibble dplyr r dplyr tidyverse lubridate tibble