【发布时间】:2020-08-17 11:05:55
【问题描述】:
虽然有几个相关的,但无法找到准确的 Q/A 来解决这个问题。我试图为 ID 列定义的所有点组计算距离矩阵。然后选择离每组最远的两个点,保留原来的组id。每组的点数从 2、4 或 6 不等。
我的科幻小说:
df <- data.frame(x = runif(12), y = runif(12), id = rep(1:3,each = 4)) %>%
st_as_sf(coords = c("x","y"), crs = 27700)
我试过这样的代码:
a <- df %>%
group_by(id) %>%
st_distance(.)
虽然这只是返回所有点的距离矩阵。
下面给出了我想要的,尽管我担心它在大型数据集上会很慢:
maxMin <- do.call(rbind,lapply(unique(allInts$id), function(x) {
df <- allInts %>% filter(id == x)
d <- st_distance(df)
df %>% slice(unique(as.vector(which(d == max(d),arr.ind=T))))
}))
【问题讨论】: