【发布时间】:2021-02-22 07:59:28
【问题描述】:
抱歉,如果这是一个幼稚的问题,但我无法解决。我有一个数据框,其中包含名为site 的列及其坐标(long、lat)。我想根据站点距离创建一个名为weight 的新列。
例如:
site <- c(1, 2, 3, 4, 5)
long <- c(119.5772, 123.7172, 126.4772, 122.7972, 122.3372)
lat <- c(-31.45806, -33.75806, -31.91806, -31.91806, -31.91806)
df <- data.frame(site, long, lat)
我想根据地理距离在数据框df 中添加一个weight 列。换句话说,我想要一个名为weight 的列,以便根据Ellipsoid 距离对站点进行加权。谢谢。
我想要的输出应该是:
df
site long lat weight
1 1 119.5772 -31.45806 0.955
2 2 123.7172 -33.75806 0.855
3 3 126.4772 -31.91806 0.654
4 4 122.7972 -31.91806 0.358
5 5 122.3372 -31.91806 0.254
注意:我在上面的权重列中输入了随机数。标准应该是最近的站点比远处的站点获得更多的权重。
【问题讨论】:
-
基于
long、lat的图形距离。 -
站点之间应该有距离。例如,site1 的距离应该通过它与所有其他站点的距离进行比较,并且对于所有站点都相同。之后,应计算权重并将其分配给新列。
-
是的,它需要计算一个距离矩阵。并且权重标准应该是这样的,即最近的站点将获得更多的权重,而远处的站点将获得更少的权重。
-
计算
weight的公式/算法是什么? -
@Wimpel 我不知道。这就是我在这里发布问题的原因。