【发布时间】:2020-09-17 16:50:51
【问题描述】:
我在R 中使用常规数据框 (df) 和 shapefile (map2),共享一个名为 CD116FP 的公共列。 df 有 103552 行,而 map2 有 444 行。我正在通过以下方式加载 shapefile:
map2
我的最终目标是使用函数mapview() 来查看包含在map2 中的地图,其“强度”在df 列np_scores 下描述。因此,我不希望看到df 上没有出现在map2 上。
以下是我的想法和失败:
-
如果这两个对象是常规数据帧,一个合理的选择是使用
merge()来组合这两个对象,但是如果在这种情况下应用该函数,生成的对象会失去空间属性并且mapview不知道怎么读。 -
我使用的另一种方法是尝试这行代码:
map2m
但结果的尺寸太大(远大于 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}
}
}
但是,考虑到我的数据框的尺寸,这种方法会花费太多时间。
你有什么建议吗?
【问题讨论】:
-
你能分享一下.shp吗?或者也许共享一个类似的文件?
标签: r merge shapefile r-mapview