Это вопрос, который я имел дело с много раз, и я ЖЕЛАЮ SAS был лучшим способом сделать это ,
Мое решение - это макрос, который обобщен, предоставляет ваши входные данные, список переменных и имя вашего выходного набора данных. Я принимаю во внимание формата/типа/метка переменной, которая бы сделать
Надеются, что это помогает:
https://gist.github.com/statgeek/c099e294e2a8c8b5580a
/* Описание: Создает таблицу Односторонний Freq переменных в том числе процентов/ рассчитывать параметры: dsetin - inputdataset списке переменных - список переменных, которые будут проанализированы, разделенных пробелами dsetout - имя набора данных, созданного
Автор: Ф.Хуршед Дата: ноябрь 2011
*/
%macro one_way_summary(dsetin, varlist, dsetout);
proc datasets nodetails nolist;
delete &dsetout;
quit;
*loop through variable list;
%let i=1;
%do %while (%scan(&varlist, &i, " ") ^=%str());
%let var=%scan(&varlist, &i, " ");
%put &i &var;
*Cross tab;
proc freq data=&dsetin noprint;
table &var/ out=temp1;
run;
*Get variable label as name;
data _null_;
set &dsetin (obs=1);
call symput('var_name', vlabel(&var.));
run;
%put &var_name;
*Add in Variable name and store the levels as a text field;
data temp2;
keep variable value count percent;
Variable = "&var_name";
set temp1;
value=input(&var, $50.);
percent=percent/100; * I like to store these as decimals instead of numbers;
format percent percent8.1;
drop &var.;
run;
%put &var_name;
*Append datasets;
proc append data=temp2 base=&dsetout force;
run;
/*drop temp tables so theres no accidents*/
proc datasets nodetails nolist;
delete temp1 temp2;
quit;
*Increment counter;
%let i=%eval(&i+1);
%end;
%mend;
%one_way_summary(sashelp.class, sex age, summary1);
proc report data=summary1 nowd;
column variable value count percent;
define variable/ order 'Variable';
define value/format=$8. 'Value';
define count/'N';
define percent/'Percentage %';
run;
При запуске вашего первого примера я получаю предупреждение при сохранении всех трех переменных таблицы в одном и том же выходном наборе данных при использовании этого подхода. Я думаю, что резюме резюме здесь лучше, согласно моему ответу. – user667489