У меня есть фрейм данных с наблюдением за животными, связанным со временем, и мне нужно распределить их по разным группам в зависимости от того, находятся ли наблюдатели на расстоянии 10 минут друг от друга. Тем не менее, не стоит использовать фиксированное 10-минутное разделение времени. Мой df выглядит так:
DateTime Total_Adults Site Species Group_equal_int Group_ideal
2016-05-28 18:29:14 1 1A wildebeest 1 1
2016-05-28 18:29:53 1 1A wildebeest 1 1
2016-05-28 18:30:02 1 1A wildebeest 1 1
2016-05-28 18:37:56 1 1A wildebeest 1 1
2016-05-28 18:45:03 1 1A wildebeest 2 2
2016-05-28 18:50:24 1 1A wildebeest 3 2
2016-05-28 18:50:40 2 1A wildebeest 3 2
2016-05-28 18:58:52 1 1A wildebeest 3 3
2016-05-28 18:59:25 1 1A wildebeest 4 3
2016-05-28 18:59:41 2 1A wildebeest 4 3
Наблюдение считается независимым, если с интервалом 10 минут, в противном случае два акса считаются одним и тем же животным.
Простым решением было бы разделить временной ряд на 10-минутные скобки, начиная с первых наблюдений;
interval <- seq.POSIXt(from = min(df$DateTime), to = max(df$DateTime), by = 600)
df$Group_equal_int <- findInterval(df$DateTime, vec = interval)
Я предпочитаю не делать этого;это разделение является последовательным, пока наблюдения расположены на расстоянии менее 10 минут друг от друга. Как только последующие наблюдения находятся на расстоянии более десяти минут от предыдущего, существует вероятность того, что интервал времени, выбранный в первую очередь, попадает в середину ряда наблюдений, которые следует рассматривать как одиночные наблюдения (менее 10 минут междупервый и последний) и посчитайте, что это два акса. Я показываю, что происходит в Group_equal_int по сравнению с group_ideal.
Мне нужно было бы разделить время моего набора данных таким образом, чтобы это объясняло это, но я не знаю, как сделать начальную точку 10минутные перерывы для сброса каждый раз, когда два акса находятся дальше, чем 10 минут.
любая идея?