I'm trying to create a basic heat map by regions using proc GMAP. I would like to create five fixed choro ranges that don't change, even if values aren't available for that particular month (i.e. in the code below, there are no values under 40% or above 70%). I created a ranking variable in my data set ("Change") to be modified by the proc format and in the choro statement. However, the choro continues to work on the range of available values, ignoring the format. Any help is appreciated. Thanks!
proc format;
value Change_Groups
1="Under 40%"
2="40%-49%"
3="50%-59%"
4="60%-69%"
5="70% and Up";
run;
pattern1 v=ms c=Green;
pattern2 v=ms c=Lig;
pattern3 v=ms c=Yellow;
pattern4 v=ms c=Red;
pattern5 v=ms c=Maroon;
proc gmap
map=Data_Proj
data=Data_Proj;
format Change Change_Groups.;
id maparea;
choro Change / levels=6 legend=legend1 coutline=black html=Data_html;
run;
quit;
Are your change values actually in the map data set? If so try creating a separate data set with the change varaible and the appropriate Id variable only and use it as the Data=dataset.
The variable is in the data set, but I want it to format based on variable that may or may not be in that variable. For example, I want a green shade for any values under 40%, so if there are not any values under 40%, I don't want green to show up.
Note that your map= data set should be a map, and the data= data set should be your response data.
I think you will want to use code something like the following (this is not complete code, but should get you going in the right direction):
data Data_Proj; set Data_Proj;
if Change<.4 then change_category=1;
else if Change<.49 then change_category=2;
else if Change<.59 then change_category=3;
else if Change<.69 then change_category=4;
else change_category=5;
run;
proc gmap data=Data_Proj map=maps.us;
format change_category Change_Groups.;
choro change_category / midpoints= 1 2 3 4 5;
quit; run;
I also recommend getting a good understanding of the gmap fundamentals, by reading Mike Zdeb's excellent book: http://www.amazon.com/Maps-Made-Using-Carpenters-Software/dp/1590470931
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.
Ready to level-up your skills? Choose your own adventure.