首页 > 解决方案 > 将 data.frame 对象中的数值变量添加到包含 multpolygons 的 sf 对象

问题描述

我无法将数据框对象中的数值变量添加到包含多边形的 SF 对象。所以,我不能用 Ggplot2 创建我的地图。

任何帮助将不胜感激...

非常感谢

理查德

标签: rgissf

解决方案


{sf}对象是修改后的数据帧。有一列,通常是最后一列,包含几何图形并且大部分是隐藏的+关于坐标参考系统等有一些特殊的调味料。但要点是一个数据框(与早期的{sp}对象不同,但我离题了)。

因此,{sf}数据帧很容易适用于数据连接技术,例如dplyr::left_join()在下面的代码示例中使用。

library(sf)
library(dplyr)
library(ggplot2)

shape <- st_read(system.file("shape/nc.shp", package="sf")) # included with sf package

# just some semi - random data
# county with ID 2041 is Mecklenburg (as in Charlotte of Mecklenburg-Strelitz)
some_values <- data.frame(ID = c(2041),
                          value = c(1))

# left is usually safer than inner join as it does not filter rows
mod_shape <- shape %>% 
  left_join(some_values, by = c("CNTY_ID" = "ID")) 

ggplot(data = mod_shape) +
   geom_sf(aes(fill = value))  # viola! a polygon of North Carolina

带有蓝色 Mecklenburg cnty 的 NC shapefile


推荐阅读