我有一个具有多个多边形的数据集,在不同的位置共享相同的属性。我只想要一个多边形在我的数据集中为每一组独特的属性(所以在我下面的例子,那将是Area
和Zone
) -我不关心他们在哪里,所以我想忽略几何属性。
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)
发布于 2020-09-02 05:20:20
我找到了另一种方法:
Areas %>% group_by(Area,Zone) %>%
mutate(id = row_number()) %>%
filter(id == 1) %>%
select(-id)
如果您正在处理包含大量多边形的数据集,这可能比@Waldi的回答要快(至少对我来说是这样)。
发布于 2020-09-01 13:35:16
你可以总结一下:
Areas %>% group_by(Area,Zone) %>% summarize()
# A tibble: 2 x 3
# Groups: Area [2]
Area Zone geometry
<chr> <chr> <POLYGON>
1 Zone1 Area27 ((120.2 -1.2, 120.063 -6.433596, 119.6522 -11.65285, 118.9688 -16.84345, 118.0~
2 Zone2 Area42 ((120.1 -1.1, 119.963 -6.333596, 119.5522 -11.55285, 118.8688 -16.74345, 117.9~
https://stackoverflow.com/questions/63694531
复制相似问题