我有一个数据框如下:
X1 X2
6.134811 49.58038
6.135331 49.58127
6.135670 49.58170
6.134905 49.58199
我想创建一个新变量X3,计算每个GPS点序列之间的距离。第一行可以是0,然后第二行将是第一行和第一行之间的距离。第2行,第3行将是第2行和第2行之间的距离。第3行,依此类推,如下:
X1 X2 X3
6.134811 49.58038 0
6.135331 49.58127 114
6.135670 49.58170 61
6.134905 49.58199 90
非常感谢任何关于如何解决这个问题的想法!
答案 0 :(得分:0)
使用head
和tail
来隔离data.frame
的“除了第一个”和“除了最后”之外的所有部分,然后将这些部分传递到所需的距离函数。将结果前置为0并将其分配给数据中的新列:
X <- data.frame( X1 = c(6.134811, 6.135331, 6.135670, 6.134905),
X2 = c(49.58038, 49.58127, 49.58170, 49.58199) )
X$X3 <- c( 0, geosphere::distCosine( head(X,-1), tail(X,-1) ) )
# X1 X2 X3
# 1 6.134811 49.58038 0.00000
# 2 6.135331 49.58127 105.94514
# 3 6.135670 49.58170 53.75830
# 4 6.134905 49.58199 63.95907