将列框数据框添加到 R 中的空间多边形数据框

问题描述

我有两个文件包括 covid_provincial.csvCo_adm1.zip 文件。第一个包含在一个国家/地区确认的 COVID 数量。第二个是国家边界的shapefile。我将它们导入 R 并将它们存储到 ab 对象中,编写以下代码

a<-read.csv("the directory of my system which includes covid_provincial.csv")

b<-readOGR(dsn = "the directory (the folder) of my system which includes shape files")

我想向 b 对象添加一个名为 Province 的变量。最后,我想将 a 合并到 b

解决方法

编辑

考虑到@Robert 的建议,最好省略对 @data 的显式调用。 您可以通过以下方式在 shp 文件中添加一列:

b$Province<-c("provinces","names","ecc")

或者这样,如果您现在 a 中的 Province 顺序对应于 b

的元素
b$Province<-a$Province

然后通过合并将 a 合并到 b

b <-merge(b,a,by="Province")

这应该有效。然而,做同样的事情有不同的方式。

编辑 我添加了一个包含一些数据的示例。此示例不可重复,但应该会引导您朝着正确的方向前进:

library(raster)
shp <- shapefile("dati/Limiti_2016_WGS84_Italia/regioni/basilicata_provincie.shp")
plot(shp)

enter image description here

data.frame(shp)

  SHAPE_Leng SHAPE_Area   X_sum
0   593511.8 6593536923 4751953
1   367848.1 3479205085 1371840

制作玩具data.frame

df <- data.frame(provincie=c("A","B"),pop=c(10000,20000),covid=c(2000,3500))
shp$provincie <- df$provincie

现在 shp 看起来像这样

  SHAPE_Leng SHAPE_Area   X_sum provincie
0   593511.8 6593536923 4751953         A
1   367848.1 3479205085 1371840         B

最后,我们可以merge这两个

shp <- merge(shp,df,by="province")
 data.frame(shp)

输出为:

  provincie SHAPE_Leng SHAPE_Area   X_sum   pop covid
1         A   593511.8 6593536923 4751953 10000  2000
2         B   367848.1 3479205085 1371840 20000  3500

但保留了 shp 的类

> class(shp)
[1] "SpatialPolygonsDataFrame"
attr(,"package")
[1] "sp"