计算R中一系列x-y坐标之间的距离
Calculating distance between a series of x-y coordinates in R
我有一个 x-y 坐标的数据框,我想计算连续点之间的距离。我的问题是我不知道如何使用来自另一列的多个点来计算新列。
我知道如何计算此处介绍的新列:Creating a new column to a data frame using a formula from another variable
但是,距离公式需要来自同一列的两个值来计算一个值(distance = sqrt((x2-x1)^2+(y2-y1)^2))。如果我只有一个列用于 x 和 y,我该如何指定 x1 vs x2 和 y1 vs y2?另外,第一点会不会有任何问题,因为它前面没有点? (即会有一个空的距离单元格 - 这是一个问题吗?)
我知道我可以在 Excel 中很容易地做到这一点,但我有很多不同的数据集需要相同的处理,所以我想在 R 中实现自动化。
你可以参考上一行。请注意,第一行没有先验坐标集。仅供参考,如果您有非常大的数据集,您可能需要使用 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)
我有一个 x-y 坐标的数据框,我想计算连续点之间的距离。我的问题是我不知道如何使用来自另一列的多个点来计算新列。
我知道如何计算此处介绍的新列:Creating a new column to a data frame using a formula from another variable
但是,距离公式需要来自同一列的两个值来计算一个值(distance = sqrt((x2-x1)^2+(y2-y1)^2))。如果我只有一个列用于 x 和 y,我该如何指定 x1 vs x2 和 y1 vs y2?另外,第一点会不会有任何问题,因为它前面没有点? (即会有一个空的距离单元格 - 这是一个问题吗?)
我知道我可以在 Excel 中很容易地做到这一点,但我有很多不同的数据集需要相同的处理,所以我想在 R 中实现自动化。
你可以参考上一行。请注意,第一行没有先验坐标集。仅供参考,如果您有非常大的数据集,您可能需要使用 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)