从dplyr(0.8.3)和sf(0.8.0)开始,以下是可能的(请参见https://stackoverflow.com/a/49354480/9164265):
library(dplyr)
library(sf)
nc <- st_read(system.file("shape/nc.shp", package="sf"))
nc %>%
group_by(SID74) %>%
summarise(geometry = st_union(geometry)) %>%
ungroup()
这会产生将具有相同SID74
的每个几何图形合并到自己的MULTIPOLYGON
s中的效果。
但是,现在(dplyr 1.0.0)出现以下错误:
Error: Problem with `summarise()` input `geometry`.
x Input `geometry` must return compatible vectors across groups
ℹ Input `geometry` is `st_union(geometry)`.
ℹ Result type for group 1 (SID74 = 0): <sfc_MULTIPOLYGON>.
ℹ Result type for group 2 (SID74 = 1): <sfc_MULTIPOLYGON>.
Run `rlang::last_error()` to see where the error occurred.
有没有人知道为什么dplyr抛出此错误,尽管类型显然属于同一<sfc_MULTIPOLYGON>
类?
感谢您的帮助!
答案 0 :(得分:1)
升级sf 0.8.0 --> 0.9.5
时不再显示错误。
尽管这不能解释错误(使用dplyr 1.0.0
和sf 0.8.0
本身,但在升级dplyr
时(尤其是通过option => option[returnKey]
主要版本)。
答案 1 :(得分:0)
我没有可重现的示例(我现在正处于截止日期内),但是当我运行一些代码时遇到了类似的错误:
df <- df %>% group_by(case_id) %>% dplyr::mutate(status_official = last(na.omit(status)))
每个 case_id 的数据有 1 到 30 行。我认为问题在于有些案例没有非缺失的状态值,而有些则是。当我过滤掉缺少状态值的行时,我没有收到错误消息。