小编Wei*_*rez的帖子

合并形状文件和数据框

我正在使用R常规数据框(df)和形状文件(map2),它们共享一个名为 的公共列CD116FPdf有 103552 行,而map2有 444 行。我通过以下方式加载 shapefile:

map2 <- read_sf("D:/Data/tl_2019_us_cd116.shp")

我的最终目标是使用该功能mapview()来查看包含在列下map2描述的“强度”的地图。因此,我不希望没有出现在 上的观察结果。dfnp_scoresdfmap2

以下是我的想法和失败:

  1. 如果这两个对象是常规数据帧,则合理的候选者是用于merge()组合两个对象,但是如果在这种情况下应用该函数,生成的对象将失去空间属性并且mapview不知道如何读取它。

  2. 我使用的另一种方法是尝试这行代码:

map2m<-data.frame(map2, df[匹配(map2$CD116FP, df$CD116FP),])

但结果的尺寸太大(比 444 行大得多),因此mapview在尝试绘制所需地图时会崩溃。

  1. 最后,我全力以赴,构建了一个循环来将列添加npmap2
map2$np=10

for (i in c(1:nrow(map2)))
{  
for (j in c(1:nrow(df)))
 {
if (identical(map2$CD116FP[i],df$CD116FP[j]))
{map2$np[i]=df$np_score[j]}
else {map2$np[i]=0}  
}
}  
Run Code Online (Sandbox Code Playgroud)

然而,考虑到我的数据框的尺寸,这种方法花费了太多时间。

你有什么建议吗?

merge r shapefile r-mapview

6
推荐指数
1
解决办法
4407
查看次数

标签 统计

merge ×1

r ×1

r-mapview ×1

shapefile ×1