编辑(2019-06):此问题已不存在,因为this issue已关闭并实现了相关功能。如果您现在使用更新的软件包运行代码,它将正常工作。
我正在尝试查找重叠的时间间隔,并决定使用dplyr::left_join()
将时间间隔数据与自身连接,以便我可以通过相同的id将时间间隔与lubridate::int_overlaps()
与其他时间间隔进行比较。
这是我期望left_join()
的行为方式。两个具有三行的tibble交叉形成一个tibble,其中有9行:
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
我认为这是意外的,但我可能错过了什么?还是这是一个错误?
我正在使用 lubridate 1.7.1、tibble 1.3.4 和 dplyr 0.7.4。