Я сделал функцию, используя пакет Imap и функцию gdist. Моя функция просто проходит через координаты широты и долготы в качестве переменных для измерения расстояния.
У меня есть один конкретный длинный / лат, который я хочу измерить на расстоянии от списка длинных / лат. Я хочу добавить этот список в свою функцию для измерения расстояния в милях.
Если расстояние меньше 50 миль, я хочу, чтобы он считал запись. В идеале, я бы получал количество записей в пределах 50 миль от моей целевой длины / широты, чтобы я мог разделить его на общее количество записей, чтобы я мог получить процент записей в радиусе 50 миль. Я надеюсь, что это имеет смысл.
Я пытался использовать оператор if, но вычеркнул. Я пытался исследовать показания контраргумента, но не могу найти рабочее. Я надеюсь, что смогу интегрировать цикл for и / или оператор if для подсчета местоположений менее 50 миль.
SFlong <- -90.0490
SFlat <- 35.1495
ship <- function(x, y) {
dist <- gdist(
lon.1 = SFlong,
lat.1 = SFlat,
lon.2 = x,
lat.2 = y,
units = "miles",
a = 6378137.0,
b = 6356752.3142,
verbose = FALSE
)
return(dist)
}
Вот пример ввода:
structure(list(zip = c("00210", "00210", "00210", "00210", "00210"
), city.x = c("Portsmouth", "Portsmouth", "Portsmouth", "Portsmouth",
"Portsmouth"), state = c("NH", "NH", "NH", "NH", "NH"), latitude =
c(43.005895,
43.005895, 43.005895, 43.005895, 43.005895), longitude = c(-71.013202,
-71.013202, -71.013202, -71.013202, -71.013202), city.y = c("GARDABAER",
"GARDAB<c6>R", "???", "HELSINKI", "????????"), count = c(7L,
1L, 1L, 5L, 2L)), row.names = c(NA, 5L), class = "data.frame")
Это функция для расчета расстояния. Это работает, когда предоставлены х и у. Я хочу, чтобы он пролистал список латов и длин, нашел расстояние менее 50 миль и сосчитал их.
Я просто не могу отобразить логику кода, который даст мне то, что я хочу. Любые предложения будут с благодарностью или просто подтолкнуть в общем направлении. Спасибо.