我使用电子标签的鱼。下面是我的遥测数据片段(数据帧“d”)。每个时间戳代表对唯一鱼的检测。
TagID Detection Location RiverKm
163 02/23/2012 03:17:44 Alcatraz_E 4.414
163 02/23/2012 03:56:25 Alcatraz_E 4.414
163 04/14/2012 15:10:20 Alcatraz_E 4.414
163 04/14/2012 15:12:11 Alcatraz_N 4.414
163 03/11/2012 08:59:48 Alcatraz_N 4.414
163 03/11/2012 09:02:15 Alcatraz_N 4.414
163 03/11/2012 09:04:05 Alcatraz_N 4.414
163 03/11/2012 09:04:06 Alcatraz_N 4.414
163 03/11/2012 09:06:09 Alcatraz_N 4.414
163 03/11/2012 09:06:11 Alcatraz_E 4.414
有许多不同的 TagID(个体鱼)。我想通过识别开始时间(“到达”)和结束时间(“离开”)将检测分类为每条鱼的遭遇时段,临界值为 1 小时。例如,对于上述鱼(TagID 163),输出将是:
TagID arrival departure Location RiverKm
163 02/23/2012 03:17:44 02/23/2012 03:56:25 Alcatraz_E 4.414
163 04/14/2012 15:10:2 04/14/2012 15:12:11 Alcatraz_N 4.414
163 03/11/2012 08:59:48 03/11/2012 09:06:11 Alcatraz_E 4.414
我想创建一个执行以下操作的循环(或任何其他代码结构):
for j in 1:length(unique(d$TagID))
- 确定第一次检测的时间(“t1”)
- 如果时间序列中该标签的下一次检测(“t2”)距离 t1 不到一小时,则跳过它并继续下一次检测;否则,将 t1 放在“到达”向量中,将 t2 放在“离开向量”中。
- 在为每个 TagID 分类每个到达和离开时间戳时停止。
我不知道如何以最有效的方式做到这一点,非常感谢您的帮助。
谢谢!