Saving results from SAS proc freq with multiple tables

Natalia picture Natalia · Jan 16, 2015 · Viewed 26.3k times · Source

I'm a beginner in SAS and I have the following problem.

I need to calculate counts and percents of several variables (A B C) from one dataset and save the results to another dataset. my code is:

proc freq data=mydata; tables A B C / out=data_out ; run;

the result of the procedure for each variable appears in the SAS output window, but data_out contains the results only for the last variable. How to save them all in data_out? Any help is appreciated.

Answer

Joe picture Joe · Jan 16, 2015

ODS OUTPUT is your answer. You can't output directly using the OUT=, but you can output them like so:

ods output OneWayFreqs=freqs;
proc freq data=sashelp.class;
  tables age height weight;
run;
ods output close;

OneWayFreqs is the one-way tables, (n>1)-way tables are CrossTabFreqs:

ods output CrossTabFreqs=freqs;
ods trace on;
proc freq data=sashelp.class;
  tables age*height*weight;
run;
ods output close;

You can find out the correct name by running ods trace on; and then running your initial proc whatever (to the screen); it will tell you the names of the output in the log. (ods trace off; when you get tired of seeing it.)