У меня есть 2 набора данных: один для больниц, а другой - для процедур. У каждого набора данных есть координаты широты и долготы. Процедуры проводятся либо в больнице, либо за ее пределами, хотя координаты не обязательно являются точными, если их называют в больницах. Я пытаюсь сформировать радиус определенного размера вокруг каждой из больниц и определить, сколько точек процедуры в среднем попадает в этот радиус. Итак, если, например, у меня 100 больниц и 3000 процедур, я хочу сформировать радиус вокруг всех больниц и посмотреть в среднем, сколько больниц попадает в этот указанный радиус. Мой исходный код приведен ниже, но я знаю, что это можно сделать быстрее. закодирован в R. Спасибо!
for(i in 1:NROW(hospitals)){
hospital <- hospitals[i,]
radius <- .016
# find all the procedures that lie in the .016 sized radius from this hospital
hospital$latitude_low <- hospital$lat - radius
hospital$longitude_low <- hospital$long - radius
hospital$latitude_high <- hospital$lat + radius
hospital$longitude_high <- hospital$long + radius
in_rad <- procedures[(procedures$long >= hospital$longitude_low & procedures$long <=
hospital$longitude_high & procedures$lat <= hospital$latitude_high & procedures$lat >=
hospital$latitude_low),]
num <- NROW(in_rad)
hospitals[i,]$number_of_procedures <- num
}
fields
пакетную функциюrdist.earth
. Вы получаете расстояние в километрах или милях между двумя матрицами координат долгота / широта. - person bzki   schedule 04.06.2020