编辑(2019-06):此问题不再存在,因为此问题已关闭并实施了相关功能。如果您现在使用更新的包运行代码,它将起作用。
我试图找到重叠的间隔,并决定将间隔数据加入到自身中,dplyr::left_join()
以便我可以lubridate::int_overlaps()
通过相同的 id 将间隔与其他间隔进行比较。
这就是我期望left_join()
的行为方式。三行的两个小标题交叉形成一个有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
我认为这是出乎意料的,但我可能会遗漏一些东西?或者它是一个错误?