如何基于R中的数据框在多个范围内选择日期

时间:2018-09-12 21:29:33

标签: r intervals

我正在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%,因为它可以在间隔列​​表之间找到日期。

0 个答案:

没有答案