R

时间:2017-08-03 19:04:52

标签: r

我有一个数据框如下:

    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

非常感谢任何关于如何解决这个问题的想法!

1 个答案:

答案 0 :(得分:0)

使用headtail来隔离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