我们有一个像这样的形状文件:
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")
您可以使用
left_join
包中的 tidyterra
将数据框连接到 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"))