当 left_join 和 merge 都收到错误时,如何将数据帧与空间数据帧组合?

CAT*_*ATS 4 merge r left-join r-sp

我正在尝试将包含医院就诊数据的数据框(“Hospital_Visits_df”)与包含 ZIP/ZCTA 多边形和坐标的 shapefile/spatial*dataframe(“shp”,从人口普查局下载合并。

两个数据框分别包含匹配的列ZCTAGEOID10,但shp包含整个美国的多边形,稍后我将缩减到相关州。

我尝试同时使用merge()left_join(),但两者都会导致自己的错误。

shp_hospital_zip1 <- merge(shp, Hospital_Visits_df, by.x = "GEOID10", by.y = "ZCTA")

.local(x, y, ...) 中的错误:检测到非唯一匹配项

但两列中都没有重复项。

shp_hospital_zip2 <- shp@data %>% 
   left_join(Hospital_Visits_df, by = c("GEOID10" = "ZCTA"))
Run Code Online (Sandbox Code Playgroud)

这似乎有效,除了当我去summary(shp_hospital_zip2)它时不再将其指定为空间数据框。

我希望将我的医院就诊数据与空间数据合并,以便我可以用传单绘制它,但我在第一步就被绊倒了。

我很感激你能给我的任何帮助。非常感谢 !!

dem*_*ain 6

我认为您需要left_join()直接在 sf 对象上使用,而不是在 sf 对象的 @data 部分上使用。

library(sf)

class(shp)
[1] "sf"         "data.frame"

class(Hospital_Visits_df)
[1] "data.frame"

result <- shp %>% 
  left_join(Hospital_Visits_df)
Run Code Online (Sandbox Code Playgroud)