【发布时间】:2018-05-02 08:01:53
【问题描述】:
我需要找到从兰伯特坐标移动的单个 ID 的最大(绝对,非累积)距离。
我有以下数据集:
rownum <- c(1,2,3,4,5,6,7,8)
ID <- c(1,1,1,1,2,3,3,3)
years <- c(1994, 1994, 1995, 1995, 1994, 1998, 1999, 1999)
coorx <- c(160501,160507,160507,160508,160638,160402,160402,160707)
coory <- c(202549,202727,202727,202488,202701,202586,202586,202548)
test <- as.data.frame(cbind(rownum, ID, years, coorx, coory))
这些点位于 Lamberts 72 坐标中,因此已经处于欧几里得距离。因此我知道我需要使用 sqrt((x2-x1)^2+(y2-y1)^2) 来查找行对之间的距离。我坚持的是,我需要成对比较每个单独的个体的所有行,以找到最大距离,同时进行此计算。 IE。比较第 1-2、1-3、1-4、2-3、2-4 等行并从中提取最大距离。我需要将此结果添加到新列中(每个人的所有行都有一个最大值)。
如果只有一个坐标 (ID 2),则可以添加 0 或 NA。
我只能在连续行之间或未按组拆分的整个向量中找到所有答案(例如Operate on pairs of rows of a data frame)。
有什么方法可以为此调整 combn、outer 或 dist 函数?
这个问题的扩展也是通过获取给定年份的第一个坐标并将其与任何其他年份的第一个坐标中的坐标进行比较来找到年份之间的最大距离。不过,最重要的是第一个问题。
【问题讨论】: