%macro scatmat3(data,matrixvar,groupvar); proc univariate data=&data noprint; var &groupvar; output out=Pctls pctlpts=33 67 pctlpre=P_ pctlname=P33 P67; run; proc print;run; data _null_; set Pctls; call symput('P33',left(put(P_P33,best10.))); call symput('P67',left(put(P_P67,best10.))); run; data z_scatmat; set &data; pctile=' 0_33'; if &groupvar>&P33 then pctile=' 33_67'; if &groupvar>&P67 then pctile=' 67_100'; run; title 'Scatterplot Matrix of' &matrixvar ', grouped by' &groupvar 'Percentiles'; proc sgscatter data=z_scatmat; matrix &matrixvar/ group=pctile; run; title ' '; %mend scatmat3; %scatmat3(ma2612.cars93a,displace hp highmpg,rpm); %scatmat3(ma2612.cars93a,rpm hp highmpg,displace); %scatmat3(ma2612.cars93a,displace rpm highmpg,hp);