如果我在R中有纬度和经度,我怎样才能找到美国郡最近的县?

我知道函数 sqrt((x1-x0)^2 + (y1-y0)^2) 来找到距离 . 但我有两列纬度和经度,我想找到4个最接近的县之间的差异 . 我需要循环吗?我还有一个百分比专栏 . 每个县都有一个百分比 . 所以,我需要找到最近县之间的百分比差异 .

回答(1)

3 years ago

当然,您不需要循环问题 .

不要这样做,你最好通过创建一个earth.dist函数,如下所示:

earth.dist <- function (long1, lat1, long2, lat2)
{
rad <- pi/180
a1 <- lat1 * rad
a2 <- long1 * rad
b1 <- lat2 * rad
b2 <- long2 * rad
dlon <- b2 - a2
dlat <- b1 - a1
a <- (sin(dlat/2))^2 + cos(a1) * cos(b1) * (sin(dlon/2))^2
c <- 2 * atan2(sqrt(a), sqrt(1 - a))
R <- 6378.145
d <- R * c
return(d)
}

通过将此与所有国家/地区之间的计算相结合,您可以按升序距离为每个国家/地区排序,然后计算方差 . 它将遵循您正在寻找的结果 .

希望这个功能性解释能帮到你 .