data try;
input a$ b c dd ee;
cards;
男 1 0 1 1
男 1 0 0 0
女 0 1 0 0
男 1 1 0 1
;
run;
proc format;
value b
1='多'
0='少';
value c
1='有'
0='无';
value dd
1='有'
0='无';
value ee
1='是'
0='否';
run;
%let group=a;
%let cat_var=b c dd ee;
%let CAT_n=4;
%macro x;
ods output CROSSTABFREQS = try_FREQS;
proc freq data=try;
table &group.*(&cat_var.)/nopercent nocum nocol;
run;
%mend;
%x;
%macro y;
data try1;
set try_FREQS;;
length level $20.;
variable=scan(table,-1,"");
%DO i=1 %TO &CAT_n;
ifvariable="%SCAN(&Cat_var,&i)" then do;
level=PUT(%SCAN(&Cat_var,&i),$%SCAN(&Cat_var,&i).);
end;
%end;
|