proc sort data=sashelp.cars(where = (type='SUV')) out=cars_suv_msrp; by msrp; run; /* Get NOBS */ data _null_; if 0 then set cars_suv_msrp nobs=tmpNobs; call symputx('numObs', tmpNobs); stop; run; %let nBins=4; %let binObs = %sysevalf(&numObs/&nBins); *%put &binObs; data cars_suv_msrp_bins; set cars_suv_msrp; bin = ceil(_n_ / &binObs); run; data cars_suv_msrp_binlabels; set cars_suv_msrp_bins; by bin; keep bin binLabel; retain byIdx 1 binStart; length binLabel $30; if first.bin then binStart = msrp; if last.bin then do; binLabel = put(binStart, dollar8.) || ' - ' || put(msrp, dollar8.); output; end; run; data interval_bins; merge cars_suv_msrp_bins cars_suv_msrp_binlabels; by bin; run; ods graphics / reset; proc sgpanel data=interval_bins; title "City MPG of SUVs by MSRP intervals"; panelBy binlabel / onePanel rows=1 uniscale=row noVarName proportional; vbox mpg_city / category=origin; run; title;