2014-05-10 4 views
0

J'essaie de rejoindre un sous-ensemble de deux fichiers de formes similaires, l'un avec des états des États-Unis et l'autre avec des provinces du Canada. Les jeux de données sont disponibles ici: shapefiles from GeocommonsRenommer des attributs sur un fichier de formes dans r

J'ai remarqué que dans les deux fichiers, les attributs sont légèrement différents. Dans la carte des États-Unis, les états sont étiquetés comme "STATE_NAME" mais dans la carte canadienne, les attributs sont simplement "NAME". C'est un problème parce que je ne peux pas joindre les deux shapefiles en un seul. Est-ce que quelqu'un a un travail pour ça?

ici est mon code à ce jour:

require (raster) 

#load in boundaries for plotting 
state <- readOGR(dsn = '/usa_state_shapefile.shp', layer = "usa_state_shapefile") 
projection(state) <- CRS("+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs") 
# Subset US shapefile by desired states 
nestates <- c("Maine", "Vermont", "Massachusetts", "New Hampshire" ,"Connecticut", 
       "Rhode Island","New York","Pennsylvania", "New Jersey", 
       "Maryland", "Delaware", "Virginia", "West Virginia", "North Carolina") 
state.sub <- state[as.character([email protected]$STATE_NAME) %in% nestates, ] 
summary(state.sub) 

provinces<-readOGR (dsn = '/canadian_provinces.shp', layer = "canadian_provinces") 
projection(provinces) <- CRS("+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_defs") 
canprov<- c ("Quebec", "Ontario", "Newfoundland & Labrador", "New Brunswick", "Prince Edward Island", "Nova Scotia") 
provinces.sub <- provinces[as.character([email protected]$NAME) %in% canprov,] 
summary (provinces.sub) 

Im devine que si je renomme les attributs à la même chose comme « NAME » alors je devrais être en mesure de fusionner les deux fichiers de formes en utilisant une sorte de rbind ou cbind fonction.

Répondre

2

Je ne suis pas sûr à 100%, mais je pense que cela est tout ce qui est nécessaire:

names([email protected])[names([email protected])=="STATE_NAME"] <- "NAME" 

Vous devriez alors être en mesure de joindre les ensembles de données avec

provinces_and_states <- rbind(state.sub, provinces.sub) 

Alternativement, vous pourrait probablement obtenir les données de Natural Earth.

+0

La Terre Naturelle semble mieux fonctionner que mon plan d'origine, merci. –

Questions connexes