gpt4 book ai didi

r - 使用 dplyr distinct 忽略 R 中 sf 对象的几何形状

转载 作者:行者123 更新时间:2023-12-04 15:19:12 25 4
gpt4 key购买 nike

我有一个数据集,其中多个多边形位于不同位置,共享相同的属性。对于每组唯一属性,我只希望我的日期集中有一个多边形(因此在下面的示例中,这将是 AreaZone )-我不在乎它们在哪里,所以我想忽略几何属性.

library(sf)
library(dplyr)

Areas <- st_as_sf(tibble(
Area =c("Zone1", "Zone1","Zone2","Zone1"),
Zone =c("Area27","Area27","Area42","Area27"),
lng = c(20.1, 20.2, 20.1, 20.1),
lat = c(-1.1, -1.2, -1.1, -1.1)),
coords = c("lng", "lat")) %>% st_buffer(.,100)
我正在使用 dplyr distinct 删除重复记录,但我发现几何列被用于确定不同的记录,即使我认为这应该忽略几何列:
Areas %>% distinct(across(-geometry),.keep_all=TRUE)
但是,当几何形状不同时,它会返回 Zone1 和 Area27 的两个结果。这是预期的行为还是我做错了什么?
我所需的输出中只有两行,一个用于 Zone1 & Area27,另一行用于 Zone2 & Area42,保留这些行的几何形状,即类似于在普通 tibble 上运行相同代码的情况:
Table <- tibble(
Area =c("Zone1", "Zone1","Zone2","Zone1"),
Zone =c("Area27","Area27","Area42","Area27"),
lng = c(20.1, 20.2, 20.1, 20.1),
lat = c(-1.1, -1.2, -1.1, -1.1))

Table %>% distinct(across(c(-lng,-lat)),.keep_all=TRUE)

最佳答案

我找到了一个替代方法:

Areas %>% group_by(Area,Zone) %>% 
mutate(id = row_number()) %>%
filter(id == 1) %>%
select(-id)
如果您正在处理包含大量多边形的数据集,这可能比@Waldi 的答案要快(至少对我来说是这样)。

关于r - 使用 dplyr distinct 忽略 R 中 sf 对象的几何形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63694531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com