SAS-如何PROC EXPORT由宏创建的多个PROC FREQ?

SAS- how to PROC EXPORT multiple PROC FREQ created by a 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)));

输出生成多个具有相同标题的过程频率表。 我需要将此输出放入 excel spreadsheet。理想情况下,所有 proc freqs 都在一个 sheet 中,一个在另一个之上或单独的 sheets。

这可能吗?

提前致谢!!!

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

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

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

您可以选择将它们全部放在一个 sheet 上还是单独的 sheet 上。如果您有较早版本的 SAS,则可以使用 ODS TAGSETS.EXCELXP,尽管它们较少 "true excel" 个文件。您还可以使用 ODS.

制作 CSV 文件或各种其他文件

在你的情况下,你会把开头的 ODS EXCEL 行放在宏的第一个 调用 之前(不必在宏的定义之前)然后是最后一次调用后的 ODS EXCEL CLOSE 行。