Я работаю с рыбой с электронной меткой. Фрагмент моих данных телеметрии (фрейм данных "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.
Я понятия не имею, как сделать это наиболее эффективным способом, и был бы очень признателен за вашу помощь.
Благодарю вас!