将列框数据框添加到 R 中的空间多边形数据框
Adding a column frame a data frame to a spatial polygons data frame in R
我有两个文件,包括 covid_provincial.csv
和 Co_adm1.zip
文件。第一个包括一个国家/地区确认的 COVID 数量。第二个是国家边界的形状文件。我将它们导入 R 并将它们存储到 a
和 b
对象中,编写以下代码:
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")
我想将名称为 Province 的变量添加到 b
对象。最后,我想将 a
合并到 b
。
编辑
考虑到@Robert的建议,最好省略对@data
的显式调用。
您可以通过以下方式向您的 shp 文件添加一列:
b$Province<-c("provinces", "names", "ecc")
或者如果你现在 a
中省份的顺序对应于 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)
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 被保留
> class(shp)
[1] "SpatialPolygonsDataFrame"
attr(,"package")
[1] "sp"
我有两个文件,包括 covid_provincial.csv
和 Co_adm1.zip
文件。第一个包括一个国家/地区确认的 COVID 数量。第二个是国家边界的形状文件。我将它们导入 R 并将它们存储到 a
和 b
对象中,编写以下代码:
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")
我想将名称为 Province 的变量添加到 b
对象。最后,我想将 a
合并到 b
。
编辑
考虑到@Robert的建议,最好省略对@data
的显式调用。
您可以通过以下方式向您的 shp 文件添加一列:
b$Province<-c("provinces", "names", "ecc")
或者如果你现在 a
中省份的顺序对应于 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)
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 被保留
> class(shp)
[1] "SpatialPolygonsDataFrame"
attr(,"package")
[1] "sp"