检查观察值是否在R中的多个间隔内

检查观察值是否在R中的多个间隔内,r,dataframe,R,Dataframe,我想知道是否有一种方法可以检查一个观察(id带有日期时间)是否属于多个间隔之一 我有一个数据集[df],如下所示: id datetime 34 2020-05-13 01:00:17 34 2020-05-16 23:34:17 37 2020-05-15 12:09:17 52 2020-05-13 05:41:17 id datetime int_id 34 2020-05-13 01:00:17 1 34 2020-05-1

我想知道是否有一种方法可以检查一个观察(id带有日期时间)是否属于多个间隔之一

我有一个数据集[df],如下所示:

id   datetime
34   2020-05-13 01:00:17
34   2020-05-16 23:34:17
37   2020-05-15 12:09:17
52   2020-05-13 05:41:17
id   datetime              int_id
34   2020-05-13 01:00:17   1
34   2020-05-16 23:34:17   2
37   2020-05-15 12:09:17   7
52   2020-05-13 05:41:17   NA
我想检查这些观察值是否属于另一个数据帧[df_Interval]中的任何间隔:

int_id   id   room   entered               left
1        34   A      2020-05-13 00:40:17   2020-05-13 05:41:17
2        34   B      2020-05-16 21:41:18   2020-05-16 23:38:10
3        54   A      2020-05-13 05:11:09   2020-05-13 07:41:20
4        87   A      2020-05-13 09:00:17   2020-05-13 17:41:03
5        34   A      2020-05-18 05:40:11   2020-05-18 06:41:17
6        12   B      2020-05-13 01:48:38   2020-05-13 01:53:09
7        37   B      2020-05-15 11:33:17   2020-05-15 14:01:17
8        89   A      2020-05-13 00:43:02   2020-05-13 05:23:10
理想的结果是这样的:

id   datetime
34   2020-05-13 01:00:17
34   2020-05-16 23:34:17
37   2020-05-15 12:09:17
52   2020-05-13 05:41:17
id   datetime              int_id
34   2020-05-13 01:00:17   1
34   2020-05-16 23:34:17   2
37   2020-05-15 12:09:17   7
52   2020-05-13 05:41:17   NA
非常感谢您的建议

您可以使用:

df[df$id %in% df_intervals$id , ]

这不会给你
int\u id

我们可以通过
id
加入
df
df\u interval
,并保留
输入的
左侧的
之间的行

library(dplyr)

left_join(df, df_interval, by = 'id') %>%
   filter(datetime > entered & datetime < left | is.na(int_id)) %>%
   select(names(df), int_id)


#  id            datetime int_id
#1 34 2020-05-13 01:00:17      1
#2 34 2020-05-16 23:34:17      2
#3 37 2020-05-15 12:09:17      7
#4 52 2020-05-13 05:41:17     NA