%macro mbad(group,A,target,n);
proc sort data=&group out=Sgroup;
by group;
run;
data &A.&n.&target._bad(keep=group aren_num ali_num aprop);
set Sgroup;
by group;
retain aren_num ali_1 ali_2 ali_3 num 0;
if ae01&target.=&n or ae02&target.=&n or ae03&target.=&n then aren_num+1;
if ae01&target.=&n then ali_1+1;
if ae02&target.=&n then ali_2+1;
if ae03&target.=&n then ali_3+1;
ali_num=sum(ali_1,ali_2,ali_3);
num+1;
aprop=aren_num/num;
if last.group then output;
run;
data aaa;
do groups="Agroup","Bgroup";
do A="A","B";
do target="deg","rela","drop";
do nums=3,5,1;
do n=1 to nums;
%mbad(groups,A,target,n);