【发布时间】:2017-06-07 12:48:19
【问题描述】:
我正在尝试使用 geosphere 中的 distm 函数计算两个连续实例(行)之间的半正弦距离。最终,我想使用以米为单位的距离除以以秒为单位的时间差来计算平均速度。
这就是我以秒为单位计算时差的方式
df$Timediff_secs <-
with(df,
difftime(Timestamp, ave(Timestamp, ID, FUN=lag), units='secs'))
之前有人问过similar question,答案确实有效,但我需要按 ID 进行索引,以便每个新 ID 都以 NA 开头。我想创建一个名为df$Distance 的新列。
需要对其进行编辑,使其按 ID 进行索引,并且第一行为 NA(因为要计算的距离没有差异)
library(geosphere)
metersPerMile <- 1609.34
pts <- df1[c("lon", "lat")]
## Pass in two derived data.frames that are lagged by one point
segDists <- distVincentyEllipsoid(p1 = pts[-nrow(df),],
p2 = pts[-1,])
sum(segDists)/metersPerMile
# [1] 1013.919
这是我从链接中复制的一些示例数据
> df
Timestamp ID lat lon
2012-11-12 02:08:41 1 76.57169 -110.8070
2012-11-12 02:09:41 1 76.44325 -110.7525
2012-11-12 02:10:41 1 76.90897 -110.8613
2012-11-12 03:18:41 2 76.11152 -110.2037
2012-11-12 03:19:41 2 76.29013 -110.3838
2012-11-12 03:20:41 2 76.15544 -110.4506
感觉我已经尝试了一切,非常感谢任何帮助!
【问题讨论】:
标签: r timestamp rows geospatial distance