当在车站检测到个体动物时,我有一个大型数据集(> 900 万行)时间和位置。我想计算每只动物在车站之间旅行时沿每条动物路径的每个车站之间的距离,以及在车站之间旅行的时间。然后我想总结一下路径所有部分的总距离和时间。
对于该数据集中的每个个体,数据在每次在固定点检测到时都会进行组织。如果个人长时间连续处于静止点,则该时间段有多个记录(每条记录相隔约 30 秒)。
我可以总结下面的数据,以获得一个人每次在车站时的 1 行(见下文)。但是,当一个人多次前往同一站点时,输出无法识别。
例如
id <- c("A", "A", "A", "A", "A", "A", "A", "A", "B", "B")
site <- c("a", "a", "b", "a", "c", "c", "c", "d", "a", "b")
time <- seq(1:10)
lat <- c(1, 1, 2, 1, 3, 3, 3, 4, 1, 2)
lon <- c(1, 1, 2, 1, 3, 3, 3, 4, 1, 2)
df <- data.frame(id, site, time, lat, lon)
df %>% group_by(id, site, lat, lon) %>%
summarize(timeStart = min(time),
timeEnd = max(time))
# A tibble: 6 x 6
# Groups: id, site, lat [?]
id site lat lon timeStart timeEnd
<fct> <fct> <dbl> <dbl> <dbl> <dbl>
1 A a 1 1 1 4
2 A b 2 2 3 3
3 A c 3 3 5 7
4 A d 4 4 8 8
5 B a 1 1 9 9
6 B b 2 2 10 10
一种对数据进行分组的方法,以便将多次访问同一站点(中间有其他站点的行程)识别为行程的单独“行程”。
然后,我需要计算每个站之间的大圆距离,以及 timeEnd(第 1 站)和 timeStart(第 2 站)之间的时间差。