簡體   English   中英

R sf & dplyr:盡管跨組兼容類型,但匯總失敗

[英]R sf & dplyr: summarise fails despite compatible types across groups

從 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中的效果。

但是,現在(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> class? 謝謝你的幫助!

升級sf 0.8.0 --> 0.9.5時不再出現該錯誤。 雖然這不能解釋錯誤(使用dplyr 1.0.0sf 0.8.0 )本身,但升級所有與dplyr一起使用的軟件包是有意義的,當后者正在升級時(尤其是通過主要版本,如案例在這里)。

我沒有可重復的示例(我現在正處於最后期限),但是當我運行一些代碼時遇到了類似的錯誤:

df <- df %>% group_by(case_id) %>% dplyr::mutate(status_official = last(na.omit(status)))

每個 case_id 的數據有 1 到 30 行。 我認為問題在於,有些案例的狀態沒有缺失值,而有些則沒有。 當我過濾掉缺少狀態值的行時,我沒有收到錯誤消息。

當我嘗試對數字或 NA_Date_ 的日期進行分組時,我收到了類似的錯誤。 我通過使用 NA 而不是 NA_Date_ 解決了這個問題。

值得仔細檢查您的代碼,以嘗試找出可能出現類似不一致的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM