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-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

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