2017-07-15 84 views
0

我有x,y座標和每個所在的「組」(縣)。對於每個縣,我想知道縣內各點之間的最小,最大和平均距離。然後,我想用縣的最小,最大,平均距離標記每個點。在所有obs上獲取最小值,最大值和平均距離很容易 - 但我無法弄清楚如何通過縣得到它。這裏是我用作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點。我試着修改它通過分組,並使用語句,並聚合....

任何想法?

回答

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呼叫的數量。