union
それ自体が間隔ではない共用体を処理できる for 時間間隔の実装を探しています。
lubridate
時間間隔の関数が含まれていることに気付きunion
ましたが、ユニオンが間隔でない場合でも、常に単一の間隔を返します (つまり、両方の開始日の最小値と両方の終了日の最大値によって定義された間隔を返します。いずれかの間隔でカバーされます):
library(lubridate)
int1 <- new_interval(ymd("2001-01-01"), ymd("2002-01-01"))
int2 <- new_interval(ymd("2003-06-01"), ymd("2004-01-01"))
union(int1, int2)
# Union includes intervening time between intervals.
# [1] 2001-01-01 UTC--2004-01-01 UTC
パッケージも見ましたinterval
が、そのドキュメントにはunion
.
私の最終目標は、複雑な結合を%within%
次のように使用することです。
my_int %within% Reduce(union, list_of_intervals)
したがって、具体的な例を考えると、次のようになりますlist_of_intervals
。
[[1]] 2000-01-01 -- 2001-01-02
[[2]] 2001-01-01 -- 2004-01-02
[[3]] 2005-01-01 -- 2006-01-02
my_int <- 2001-01-01 -- 2004-01-01
そうではないので返すべきであり%within%
、そうあるべきです。list_of_intervals
FALSE
my_int <- 2003-01-01 -- 2006-01-01
TRUE
ただし、複雑な結合にはこれ以外にも用途があると思います。