R - объединить символьные и числовые столбцы в SpatialPolygonsDataFrame - PullRequest
0 голосов
/ 17 ноября 2018

Я хотел бы найти эффективный способ объединения определенных символьных + числовых значений столбцов в список SpatialPolygonsDataFrame объектов. Вот воспроизводимые данные:

library(maptools)  ## For wrld_simpl
library(sp)

## Example SpatialPolygonsDataFrames (SPDF)
data(wrld_simpl) #polygon of world countries
spdf1 <- wrld_simpl[1:25,] #country subset 1
spdf2 <- wrld_simpl[26:36,] #subset 2
spdf3 <- wrld_simpl[36:50,] #subset 3

#make list of SPDF objects
spdfl<-list()
spdfl[[1]]<-spdf1
spdfl[[2]]<-spdf2
spdfl[[3]]<-spdf3

#view data (attribute table) for one list element
spdfl[[1]]@data

Я хотел бы добавить еще один столбец, представляющий собой комбинацию столбцов FIPS, REGION и SUBREGION, разделенных подчеркиванием ('_'). Я знаю, как добавить + имя нового столбца к каждому объекту SPDF в списке, как это сделано в цикле ниже, но я не знаю, как получить нужную запись строки столбца:

#add new 'unique.id' column to SPDF
for (i in 1:length(spdfl)){
  spdfl[[i]]@data["unique.id"] = ""
}

Записи строки для нового столбца unique.id будут иметь следующий формат: FIPS_REGION_SUBREGION. Например, для функции полигона ATG в spdfl [[1]] мне бы хотелось, чтобы в столбце «unique.id» была такая запись:

unique.id
AC_19_29

Посоветуйте, пожалуйста, как это сделать для всех функций в списке SPDF.

1 Ответ

0 голосов
/ 17 ноября 2018
spdfl[[1]]@data$unique.id<- 
paste(spdfl[[1]]@data$FIPS,spdfl[[1]]@data$REGION,spdfl[[1]]@data$SUBREGION,sep="_")

Редактировать: для желаемого поведения зацикливания:

for (i in 1:length(spdfl)){
  spdfl[[i]]@data$unique.id<- 
  paste(spdfl[[i]]@data$FIPS,spdfl[[i]]@data$REGION,
  spdfl[[i]]@data$SUBREGION,sep="_")
  }
...