%MACRO Gini ; PROC SORT DATA=&dataset ; BY &var ; RUN ; DATA Gini (KEEP=gini) ; IF _N_ = 1 THEN DO UNTIL (last) ; SET &dataset END=last; swt + &wgt ; swtey + (&wgt*&var) ; END ; SET hp_test END=eof; IF _N_ = 1 THEN DO ; prewt = 0 ; preey = 0 ; up = 0 ; sum = 0 ; END ; cwt + &wgt ; cwtey + (&var*&wgt); pcwt = cwt / swt * 100; pcwtey = cwtey / swtey * 100; up = (pcwt-prewt) * (pcwtey+preey) ; sum + up ; prewt = pcwt ; preey = pcwtey ; RETAIN prewt preey ; IF eof THEN DO ; gini=1-(sum / 10000) ; OUTPUT ; END ; RUN; PROC MEANS DATA=Gini MEAN ; RUN; %MEND Gini ;