BookmarkSubscribeRSS Feed
gmoore
Calcite | Level 5

Does anyone know of an existing (SAS or other) 3-digit zip code (zcta) data set? If not, what steps are needed to convert a 5-digit zip code data set to a 3-digit data set? (NOTE: I have the TigerLine 2013 US ZCTA510 data.) I believe it must be more than creating a new variable (3-digit zip code) from the existing 5-digit zip code.

Many thanks,

Gary

6 REPLIES 6
GraphGuy
Meteorite | Level 14

You would need to create the new 3-digit zip variable, and then use 'proc gremove' to remove all the internal boundaries within those 3-digit areas.

Here's the gremove doc:

SAS/GRAPH(R) 9.4: Reference, Second Edition

gmoore
Calcite | Level 5

Thanks, Robert. Will the NODECYLE option in 'proc gremove' handle non-contiguous boundaries?

GraphGuy
Meteorite | Level 14

I would try it with no extra parameters/options first, and see how it looks. I think the way it handles non-contiguous areas is to give each one a different 'segment' number.

nnat
Calcite | Level 5

Hello, were you able to figure this out?  

tyler864210
Calcite | Level 5

Gary, 

 

Were you able to convert the 5-digit zip to a 3-digit zip? If so, could you provide the SAS code to perform this conversion.  I am having trouble following the proc gremove steps provided. Thanks,

Tyler

GraphGuy
Meteorite | Level 14

Here's some code that imports a zcta boundary map, plots the zctas colored by zip3 ... and then gremoves the internal borders, and plots the zip3 polygons. This should be a good starting-point to get you going:

 

proc mapimport datafile="../democd17/zt37_d00.shp" out=zcta_map; 
 id zcta;  
run; 

proc gproject data=zcta_map (rename=(x=long y=lat)) out=zcta_map eastlong latlong degrees;
id zcta;
run;

data zcta_map; set zcta_map;
zip3=substr(zcta,1,3);
run;

proc gremove data=zcta_map out=zcta3_map;
by zip3;
id zcta;
run;

title ls=1.5 "NC Zip Code Map, Colored by zip3";
proc gmap data=zcta_map map=zcta_map all; 
id zcta; 
choro zip3 / coutline=gray cdefault=cxF5F5DC; 
run;

title ls=1.5 "NC Zip3 Map, Colored by zip3";
proc gmap data=zcta3_map map=zcta3_map all; 
id zip3; 
choro zip3 / coutline=gray cdefault=cxF5F5DC; 
run;

 

 

zip_3_boundaries.png

 

 

 

zip_3_boundaries1.png

 

 

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 6 replies
  • 3051 views
  • 0 likes
  • 4 in conversation