SAS-如何PROC导出宏创建的多个PROC FREQ?

时间:2017-09-01 13:10:28

标签: sas sas-macro

我有一个看起来像这样的宏:

%macro mac_name (st, en=); 
  %do j=1 %to &en.;
  %let k=%eval(&j.+1);
      proc freq data=data_name;
        tables status&j. * status&k. / nocol norow nopercent missing;
      run;
  %end;
%mend;
%mac_name (st=1, en=%sysfunc(week(%sysfunc(today()), u)));

输出生成具有相同标题的多个proc freq表。 我需要将此输出放入excel电子表格中。理想情况下,所有proc频率都在一张纸上,一张在另一张纸之上或单独的纸张上。

这可能吗?

提前致谢!!!

1 个答案:

答案 0 :(得分:2)

如果您使用SAS 9.4,最简单的方法是使用ODS EXCEL

ods excel file="yourfilename.xlsx";
proc freq data=sashelp.class;
  tables age;
run;

proc freq data=sashelp.class;
  tables sex;
run;
ods excel close;

您可以选择是在一张纸上还是单张纸上。如果你有早期版本的SAS,你可以使用ODS TAGSETS.EXCELXP,尽管他们不那么简单"真正的excel"文件。您还可以使用ODS制作CSV文件或其他各种内容。

在您的情况下,您需要在宏的第一个调用之前放置开头ODS EXCEL行(不必在宏的定义之前)并且然后是最后一次通话后的ODS EXCEL CLOSE行。