最小值,最大值,按组/县的点之间的平均距离

时间:2017-07-15 23:17:45

标签: r distance

我有x,y坐标和"组"每个所在的(县)。对于每个县,我想知道县内各点之间的最小距离,最大距离和平均距离。然后我想用县的最小,最大,平均距离来标记每个点。获得所有障碍物的最小,最大和平均距离很容易 - 但我无法弄清楚如何通过县获得它。以下是我用作min测试的内容:

county <- as.integer(c(1, 1, 1, 2, 2, 2))
x <- c(1.0, 2.0, 5.0, 10., 20., 50.)
y <- c(1.0, 3.0, 4.0, 10., 30., 40.)
xy <- data.frame(county,x,y)
xy$mindist <- min(dist(cbind(xy$x, xy$y)))

1县的最小值,最大值,平均值分别为2.2,5和3.5。 2县的最小值,最大值,平均值分别为22.4,50和34.7。 上面的代码用全局最小值(2.2)标记每个点,而不是用2.2标记所有计数1点,用22.4标记所有县2点。我试过通过分组,使用by语句和聚合来修改它....

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用dplyr包轻松进行分组计算。一种方法是执行以下操作

xy %>% group_by(county) %>% 
       summarise(mind = min(dist(cbind(x,y))), 
                 meand = mean(dist(cbind(x,y))), 
                 maxd= max(dist(cbind(x,y))))

产生

# A tibble: 2 x 4
  county      mind     meand  maxd
   <int>     <dbl>     <dbl> <dbl>
1      1  2.236068  3.466115     5
2      2 22.360680 34.661152    50

您还可以先收集数据,以减少cbind调用次数。

相关问题