[R-sig-Geo] mapping by zip codes

Jim Burke j.burke at earthlink.net
Tue Mar 3 23:21:52 CET 2009


Hi Tom and everyone,

First, Tom an excellent little google website you pointed out!


Then below is what I have used to merge and have fun with data frames.
My apologies in advance, Netscape Communicator will likely forget
some line feeds.

##############################
# . read in your basic state zip file with whatever columns
##############################
state_alldata_df <- read.csv ("state_info.csv", header = TRUE, sep = ",")

##############################
# . get one small state to experiment with WY has about 550,000 people 
and 23 counties
#   people and likely fewer zip codes.
# . assuming your state file has  state abbreviation as
#   ST_ABBREV, ST_NAME, and ZIP, CUST_CNT plus other non needed cols.
# . in the example below, we drop ST_ABBREV in the second data frame
##############################
wy_df <- state_alldata_df[state_alldata_df$ST_ABBREV=="WY", 
c("STATE_NAME", "ZIP", "CUST_CNT")]
remove(state_alldata_df) # clean up data frames we don't need
names(wy_df)             # list data frame columns

##############################
# . read in the shapefile see below for more general info, especially 
the 1st line readShapePoly code
# . you can also get more read shapefile examples from r-spatial.source 
forge below
# . 
http://www.nceas.ucsb.edu/scicomp/GISSeminar/UseCases/PolygonDissolve/PolygonDissolve.html
##############################
library(sp)
library(maptools)         # for geospatial services; automatically loads 
foreign and sp
library(rgdal)            # for map projection support; automatically 
loads sp
library(PBSmapping)       # for GIS_like geospatial object manipulation 
/ analysis including poly
zip1_sp <- readShapePoly("allstates.shp", IDvar="ZIP", 
proj4string=CRS("+proj=aea +ellps=GRS80 +datum=WGS84"))
names(zip1_sp)            # list spatial data frame columns, it has lots 
of other info besides cols

###########################################################
# . good explanation
#   http://www.ats.ucla.edu/stat/R/modules/subsetting.htm
# . select all cols from wy_df by default, so your $CUST_CNT is here
###########################################################
zip2_sp <- zip1_sp [zip1_sp$ZIP %in% wy_df$ZIP,]
names(zip2_sp)            # list spatial data frame columns
sapply(slot(zip2_sp, "polygons"), function(x) slot(x, "ID")) # what are 
the sp "ID"s?

###########################################################
# . plotting time. Example code from
#   http://r-spatial.sourceforge.net/gallery/#fig13.R
###########################################################
plot(zip2_sp)
invisible(text(getSpPPolygonsLabptSlots(zip2_sp), 
labels=as.character(zip2_sp$CUST_CNT), cex=0.4))
title("Wyoming Customer count", sub = "Something at the bottom of the 
graph",
      cex.main = 2,   font.main= 4, col.main= "blue",
      cex.sub = 0.75, font.sub = 3, col.sub = "red")


Hope this helps, now back to myself figuring out "spplot.polygons"
Jim Burke


Hengl, T. wrote:
>  
> Dear Alina,
>  
> If you load two datasets to R and you want to merge them via some key (e.g. zip code), you have to consider using the "merge" method e.g.:
>  
>   
>> spdata <- merge(x=data.frame(ZIP=zipshape$ZIP, X=zipshape$X, Y=zipshape$Y), y=data.frame(ZIP=customers$ZIP, V=customers$V), by=ZIP, all.y=F)
>> coordinates(merge) <-~X+Y
>>     
>  
> You could also consider using the Google service to geocode the addresses (I do not know how accurate is your US zip shape file, Google data is pretty accurate).
>  
> You should be able to figure out from this example what you have to do automate retrieval of coordinates from addresses:
>  
> http://spatial-analyst.net/wiki/index.php?title=Mapping_research_hot-spots#Geocoding_addresses
>  
>  
> HTH
>  
> Tom Hengl
>  
>  
>
> ________________________________
>
> From: r-sig-geo-bounces at stat.math.ethz.ch on behalf of Alina Sheyman
> Sent: Tue 3/3/2009 8:49 PM
> To: R-sig-Geo at stat.math.ethz.ch
> Subject: [R-sig-Geo] mapping by zip codes
>
>
>
> I'm very new to creating maps using shapefiles, so this question might be
> pretty basic.
>
> I'm trying to create a map of the US, divided up by zip codes, where i then
> map number of customers by zip code.
> I located shapefiles for US with zip codes (although at this point only for
> individual states, and not the entire country) and read it into R using
> maptools,
> but now I need to apply my data (which I read into R as a separate data
> frame and not a shapefile) to that map. Which is the part where I get
> completely lost and not sure how to proceed. If anyone could give me any
> pointers I'd really appreciate it.
>
> thank you
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
>
>
> 	[[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
>
>



More information about the R-sig-Geo mailing list