R:匹配大数据集的最近坐标

时间:2016-07-21 13:30:05

标签: r coordinates apply min

我有两组数据 - 第一组是已测量树木的2,500个站点的纬度/经度坐标列表,第二组是88个温度监测点的纬度/经度坐标列表。 我希望将2,500个站点中的每个站点与其温度监控站点相匹配。

我到目前为止所拥有的是

distance=geodists(lat.coord.A,long.coord.B,lat.coordB,long.coordB, K)

计算data.set.A和data.set.B中站点之间的距离,并且我正在研究使用apply函数来为每个88 temp执行此操作。网站一次。

然后我正在使用min()来将data.set.A中站点的最小距离给予data.set.B中的任何一个,但我宁愿只获得该特定的坐标data.set.B中的网站,而不是自己计算。

我确信这可以相对简单地完成,但似乎无法做到正确。 我对R很新,所以非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

你看起来像(使用data.table):

进行笛卡尔加入:

CartesianJoin<- function(X,Y)
  setkey(X[,c(k=1,.SD)],k)[Y[,c(k=1,.SD)],allow.cartesian=TRUE][,k:=NULL]
LatLonWide <- CartesianJoin(data.set.A,data.set.B)

然后使用:

计算距离
LatLonWide$dist <- sapply(1:nrow(LatLonWide),function(i)
  geodists(LatLonWide$lat.coord.A[i],LatLonWide$long.coord.A[i],LatLonWide$lat.coord.B[i],LatLonWide$long.coord.B[i]))