我知道找到距离的函数sqrt((x1-x0)^2 + (y1-y0)^2)
。但我有两列纬度和经度,我想找到4个最接近的县之间的差异。
我需要循环吗?
我还有一个百分比专栏。每个县都有一个百分比。所以,我需要找到最近县之间的百分比差异。
答案 0 :(得分:2)
当然,您不需要解决问题。
不是这样做,而是通过创建一个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)
}
通过将此与所有国家/地区之间的计算结合起来,您可以按升序距离为每个国家/地区订购列表,然后计算方差。 它将遵循您正在寻找的结果。
希望这个功能性解释可以帮到你。