如何使用 ODS Excel 在 SAS 中垂直堆叠表?

How do I vertically stack tables in SAS using ODS Excel?

我正在使用 Excel ODS 标记集将一系列交叉表从 SAS 9.3 导出到 Excel。

我写的语法如下:

%include 'C:\Users\MyName\Documents\excltags.tpl';
ods tagsets.excelxp file = "M:\Assess18\PARTIC_3-8.xml"

proc sort data = assess_elem;
   by accommodations_ny participation_ny district;
run;

proc freq data = assess_elem
   by accommodations_ny participation_ny district;
   tables grade*proficiency / crosslist nocum nocol;
run;

ods tagsets.excelxp close;

变量是:

上面的语法为 103 个区中的每个区创建了一个这样的 table:

have 103 separate tables

我想要的是:

want 1 stacked table

使用标签集选项 OPTIONS(SHEET_INTERVAL="Proc")

ods tagsets.excelxp 
  file=...
  style=...
  options(doc="all" sheet_interval="Proc")   /* <--- your magic --- */
;

DOC="ALL" options 选项将在日志中显示 ExcelXP 标记集文档。

您不限于 TABLE 语句中的两种方式,特别是如果您使用 LIST 选项而不是 CROSSLIST。

这是一个使用 SASHELP.CARS

的简单示例
proc freq data=sashelp.cars;
table origin*make*cylinders / list;
run;

它创建一个 table 像这样:

这不会为您提供最左侧未重复的列,如果您确实需要,PROC TABULATE 可让您更好地控制输出或将其推送到 table 并使用 PROC REPORT。