我正在R中尝试执行此操作。如何选择多个间隔内的日期来放置真值条件?这是一个例子。我从这个数据框开始,让我们调用df_person
>df_person
Person Date Exercised
Jim 2018-08-01 Yes
Jim 2018-08-02 No
Jim 2018-08-03 Yes
Jim 2018-08-04 No
Jim 2018-08-05 Yes
Jim 2018-08-06 Yes
Jim 2018-08-07 No
Jim 2018-08-08 Yes
Jim 2018-08-09 Yes
Jim 2018-08-10 No
Jim 2018-08-11 Yes
Jim 2018-08-12 No
Jim 2018-08-13 Yes
Jim 2018-08-14 Yes
Jim 2018-08-15 No
然后,通过除去第一个数据框中介于两个范围之间的任何日期,我得到此数据框以过滤第一个数据框。该数据帧称为df_range
>df_range
Person Start End
Jim 2018-08-04 2018-08-07
Jim 2018-08-10 2018-08-14
所以应该是
Person Date Exercised
Jim 2018-08-01 Yes
Jim 2018-08-02 No
Jim 2018-08-03 Yes
Jim 2018-08-08 Yes
Jim 2018-08-09 Yes
Jim 2018-08-15 No
我的逻辑是创建两个间隔
Person Start End Intervals
Jim 2018-08-04 2018-08-07 2018-08-04 UTC--2018-08-07
UTC
Jim 2018-08-10 2018-08-14 2018-08-10 UTC--2018-08-14
UTC
然后进行分组并获取间隔列表
Person Start End Intervals
Jim 2018-08-04 2018-08-07 c(2018-08-04 UTC--2018-08-07
UTC, 2018-08-10 UTC--2018-08-14 UTC
删除中间两列
Person Intervals
Jim c(2018-08-04 UTC--2018-08-07 UTC, 2018-08-10 UTC--2018-08-14
UTC)
然后在前两个数据帧上进行内部联接,然后确定df_person的日期是否落在已完成的df_range的时间间隔列表中的任何位置,如果是,则将其消除。人数将超过吉姆,因此我将需要按人员分组。我不知道它的语法。我所做的一切都会导致错误。
主要问题似乎是创建一个间隔列表,我可以在其中确定日期是否在列表中。理想情况下,最后一步是在lubridate中%% in%,因为它可以在间隔列表之间找到日期。