/*------------------------------------------------*/ /* STEP 1: Create Binary BMI Variable (Obesity) */ /*------------------------------------------------*/ data sasdata_20151; set sasdata_20151; if _BMI5 = . then bmi_g = .; else if _BMI5 >= 3000 then bmi_g = 1; /* Obese */ else if 1 < _BMI5 < 3000 then bmi_g = 0; /* Not obese */ run; /*------------------------------------------------*/ /* STEP 2: Frequency Table */ /*------------------------------------------------*/ proc freq data=sasdata_20151; tables bmi_g / missing; run; /*------------------------------------------------*/ /* STEP 3: Prepare State-Level Data (2015) */ /*------------------------------------------------*/ /* Calculate obesity prevalence by state */ proc means data=sasdata_20151 noprint; class _STATE; var bmi_g; output out=obesity2015 mean=prev_obesity; run; /* Keep valid rows */ data obesity2015; set obesity2015; where _TYPE_ = 1; run; /*------------------------------------------------*/ /* STEP 4: US MAP DATA */ /*------------------------------------------------*/ proc gproject data=maps.us out=us_map; id state; run; /*------------------------------------------------*/ /* STEP 5: Merge Map + Data (2015) */ /*------------------------------------------------*/ data map_2015; merge us_map obesity2015(rename=(_STATE=state)); by state; run; /*------------------------------------------------*/ /* STEP 6: Create Map for 2015 */ /*------------------------------------------------*/ pattern1 v=s c=lightyellow; pattern2 v=s c=yellow; pattern3 v=s c=orange; pattern4 v=s c=red; proc gmap data=map_2015 map=us_map; id state; choro prev_obesity / levels=4; title "Age-Adjusted Obesity Prevalence by State (2015)"; run; quit; /*------------------------------------------------*/ /* STEP 7: Repeat for 2017 Data */ /*------------------------------------------------*/ /* Assume dataset name is sasdata_20171 */ data sasdata_20171; set sasdata_20171; if _BMI5 = . then bmi_g = .; else if _BMI5 >= 3000 then bmi_g = 1; else if 1 < _BMI5 < 3000 then bmi_g = 0; run; /* Frequency */ proc freq data=sasdata_20171; tables bmi_g / missing; run; /* State-level prevalence */ proc means data=sasdata_20171 noprint; class _STATE; var bmi_g; output out=obesity2017 mean=prev_obesity; run; data obesity2017; set obesity2017; where _TYPE_ = 1; run; /* Merge with map */ data map_2017; merge us_map obesity2017(rename=(_STATE=state)); by state; run; /* Map for 2017 */ proc gmap data=map_2017 map=us_map; id state; choro prev_obesity / levels=4; title "Age-Adjusted Obesity Prevalence by State (2017)"; run; quit;