检查观察值是否在R中的多个间隔内
我想知道是否有一种方法可以检查一个观察(id带有日期时间)是否属于多个间隔之一 我有一个数据集[df],如下所示:检查观察值是否在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 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