2016-07-21 3 views
0

У меня есть два набора данных: первый - это список координат lat/long для 2500 сайтов, где были измерены деревья, а второй - список координат lat/long для 88 мест мониторинга температуры. Я хочу сопоставить каждый из 2500 сайтов на своем сайте мониторинга температуры.R: Согласование ближайших координат для больших данных

то, что я до сих пор является

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

для вычисления расстояния между сайтом в data.set.A и data.set.B, и я ищу в использовании функции применяется, чтобы получить г выполнить это для каждой из 88 темп. сайтов сразу.

Я играю с использованием min(), чтобы дать наименьшее расстояние от сайта в data.set.A любому из них в data.set.B, но я бы скорее получил координаты этого конкретный сайт в data.set.B, чем рассчитать его сам.

Я уверен, что это можно сделать относительно просто, но, похоже, не может быть прав. Я довольно новичок в R, поэтому любая помощь очень ценится!

+3

Пожалуйста, обеспечивают [MCVE] –

+0

Возможно, это поможет ... http://www.inside-r.org/packages/cran/spatstat/docs/nncross –

ответ

0

Вы ищете что-то подобное (с использованием 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]))