Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何筛选时间窗口内最近发生的事件?_R_Database_Filtering - Fatal编程技术网

R 如何筛选时间窗口内最近发生的事件?

R 如何筛选时间窗口内最近发生的事件?,r,database,filtering,R,Database,Filtering,我有一个数据流,包含时间、ID、两种事件类型(a和B)和(当前)空的共现列。我想检查数据集,对于每个B事件,检查前5秒内是否有A。如果是这样,则事件行将从其共现列中的B事件接收ID。在罕见的多个事件中,第二个共现添加到第二列(或者两者都可以进入同一列,稍后再处理) 我可以使用一个循环和一些逻辑来实现大多数期望的结果,但是有时在a的5秒内出现多个B,或者在B之前的5秒内出现多个B,所以使用当前行-1无法捕获这些 示例数据流如下所示: Time ID Event Co1 Co2 7:47:

我有一个数据流,包含时间、ID、两种事件类型(a和B)和(当前)空的共现列。我想检查数据集,对于每个B事件,检查前5秒内是否有A。如果是这样,则事件行将从其共现列中的B事件接收ID。在罕见的多个事件中,第二个共现添加到第二列(或者两者都可以进入同一列,稍后再处理)

我可以使用一个循环和一些逻辑来实现大多数期望的结果,但是有时在a的5秒内出现多个B,或者在B之前的5秒内出现多个B,所以使用当前行-1无法捕获这些

示例数据流如下所示:

Time     ID  Event Co1 Co2
7:47:28  X1  A
7:47:30  X2  B
7:48:02  X3  A
7:48:04  X4  A
7:48:05  X5  B
7:50:11  X1  A
7:50:12  X2  B
7:50:15  X5  B
7:55:50  X6  A
7:55:52  X2  B
经过正确的处理,应能产生以下结果:

Time     ID  Event Co1 Co2
7:47:28  X1  A     X2
7:47:30  X2  B
7:48:02  X3  A     X5
7:48:04  X4  A     X5
7:48:05  X5  B
7:50:11  X1  A     X2  X5
7:50:12  X2  B
7:50:15  X5  B
7:55:50  X6  A     X2
7:55:52  X2  B
任何正确方向的帮助或指点都将不胜感激

根据您的输入:

df <- read.table(text = "Time     ID  Event
7:47:28  X1  A
7:47:30  X2  B
7:48:02  X3  A
7:48:04  X4  A
7:48:05  X5  B
7:50:11  X1  A
7:50:12  X2  B
7:50:15  X5  B
7:55:50  X6  A
7:55:52  X2  B", header = TRUE)

# convert to HMS
df$Time <- lubridate::hms(df$Time)
根据您的意见:

df <- read.table(text = "Time     ID  Event
7:47:28  X1  A
7:47:30  X2  B
7:48:02  X3  A
7:48:04  X4  A
7:48:05  X5  B
7:50:11  X1  A
7:50:12  X2  B
7:50:15  X5  B
7:55:50  X6  A
7:55:52  X2  B", header = TRUE)

# convert to HMS
df$Time <- lubridate::hms(df$Time)

以下是使用
data中的
foverlaps
函数的解决方案。表
包:

库(data.table)

dt这里是使用
数据中的
foverlaps
函数的解决方案。表
包:

库(data.table)

你的身份证应该是唯一的吗?否则,不清楚将其放入col1的目的是什么,COL2ID是唯一的,但对于这部分处理而言,ID是转到Co1还是Co2,或者一起发送到单个列(例如“X2X5”)并不重要。我可以在稍后阶段拆分并移动它们你的ID应该是唯一的吗?否则,不清楚将其放入col1的目的是什么,COL2ID是唯一的,但对于这部分处理而言,ID是转到Co1还是Co2,或者一起发送到单个列(例如“X2X5”)并不重要。我可以在稍后阶段拆分和移动它们