我有一个x-y坐标的数据框,我想计算连续点之间的距离。我的问题是,我不知道如何使用其他列中的多个点来计算新列。
我知道如何计算这里涵盖的新列:Creating a new column to a data frame using a formula from another variable
然而,距离公式需要来自同一列的两个值来计算值(距离= sqrt((x2-x1)^ 2 +(y2-y1)^ 2))。如果我只有x和y的单列,如何指定x1 vs x2和y1 vs y2?此外,第一点是否会有任何问题,因为它之前没有任何意义? (即将有一个空的距离单元 - 这是一个问题吗?)
我知道我可以很容易地在Excel中执行此操作,但我有很多不同的数据集需要相同的处理,所以我想在R中自动化它。
答案 0 :(得分:1)
您可以参考上面的行。请注意,第一行没有先前的坐标集。仅供参考,如果您拥有非常大的数据集,则可能需要使用data.table
和shift
函数。
n <- 10
df2 <- data.frame(x = rnorm(n = n), y = rnorm(n = n), dist = as.numeric(NA))
df2$dist[2:n] <- sqrt((df2$x[2:n] - df2$x[1:n-1]) ^ 2 + (df2$y[2:n] - df2$y[1:n-1]) ^ 2)