我正在使用R常规数据框(df)和形状文件(map2),它们共享一个名为 的公共列CD116FP。df有 103552 行,而map2有 444 行。我通过以下方式加载 shapefile:
map2 <- read_sf("D:/Data/tl_2019_us_cd116.shp")
我的最终目标是使用该功能mapview()来查看包含在列下map2描述的“强度”的地图。因此,我不希望没有出现在 上的观察结果。dfnp_scoresdfmap2
以下是我的想法和失败:
如果这两个对象是常规数据帧,则合理的候选者是用于merge()组合两个对象,但是如果在这种情况下应用该函数,生成的对象将失去空间属性并且mapview不知道如何读取它。
我使用的另一种方法是尝试这行代码:
map2m<-data.frame(map2, df[匹配(map2$CD116FP, df$CD116FP),])
但结果的尺寸太大(比 444 行大得多),因此mapview在尝试绘制所需地图时会崩溃。
np到map2: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)
然而,考虑到我的数据框的尺寸,这种方法花费了太多时间。
你有什么建议吗?