我们有一个像这样的形状文件:
library(terra)
#> terra 1.6.7
v <- system.file("ex/lux.shp", package="terra") |> vect()
我们可以添加一个字段或列,如下所示:
v[["ID_new_v1"]] <- 1:nrow(v)
v$ID_new_v2 <- 1:nrow(v)
但是,我想添加一列 from:dat、一列 my,到 v 中 NAME_2 中的所有对应名称
dat=structure(list(ec = c("Diekirch", "Redange"), med.x = c(7, 8),
co.x = c(113L, 590L), my = c(3, 5), co.y = c(113L, 590L),
per = c(3, 9)), row.names = 1:2, class = "data.frame")
最佳答案
您可以使用 tidyterra
包中的 left_join
将数据框连接到 shapefile,例如
library(terra)
library(tidyterra)
v <- system.file("ex/lux.shp", package="terra") |> vect()
dat=structure(list(ecoregion = c("Diekirch", "Redange"), med.x = c(7, 8),
co.x = c(113L, 590L), my = c(3, 5), co.y = c(113L, 590L),
per = c(3, 9)), row.names = 1:2, class = "data.frame")
left_join(v, dat, by = c("NAME_2" = "ecoregion"))
您还可以使用 terra
包中的 merge
函数,例如
merge(v, dat, all.x=TRUE, by.x=c('NAME_2'), by.y=c('ecoregion'))
关于r - 使用 terra 将列添加到 shapefile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77353043/