SAS:PROC FREQ或PROC报告的个别表标题?

kst*_*pt3 5 performance report frequency sas title

PROC FREQ我不想在非常大的数据集上执行多个单独的过程,而是通过执行PROC FREQ包含多个TABLE语句的单个过程来提高效率.我们的质量检查流程需要TABLE使用单个语句使用单个TITLE语句简单的表标题,但这可能是多个TABLE语句吗?

以下面的示例数据和代码:

DATA TEST;
    INPUT TEMPERATURE HUMIDITY PLATE FORM $12.;
    DATALINES;
    25  75  1   HOT
    30  75  2   COLD
    25  45  3   HOT
    30  45  4   COLD
    25  55  5   HOT
    30  55  6   COLD
    25  15  7   HOT
    30  15  8   COLD
    ;
RUN;

** SINGLE PASS ON PROC FREQ **;
PROC FREQ DATA = TEST;
    TITLE1 "TEMPERATURE FREQS";
      TABLE TEMPERATURE / LIST OUT=FREQS_TEMP;
    TITLE2 "HUMIDITY FREQS";
      TABLE HUMIDITY / LIST OUT=FREQS_HUM;
    TITLE3 "PLATE FREQS";
      TABLE PLATE / LIST OUT=FREQS_PLATE;
    TITLE4 "FORM FREQS";
      TABLE FORM / LIST OUT=FREQS_FORM;
RUN;TITLE1;TITLE2;TITLE3;TITLE4;
Run Code Online (Sandbox Code Playgroud)

标题在输出的最顶部而不是每个表堆叠在一起,所以在数据步骤中是否可以这样,或者是否必须创建自定义模板?PROC REPORT自定义频率可能是一个更可行的选择吗?

Joe*_*Joe 6

一种选择是使用proc document. 我认为这与将频率输出到单独的表中,然后分别对这些表进行报告或频率的工作量大致相同,而且不那么混乱。

PROC DOCUMENT允许您编辑输出对象,然后重放它。在您的情况下,您在 freq 中缺少的是表格之间的分页符 - SAS 仅title在页眉上放置了一个,因此您不会在表格之间找到它。我认为 PROC FREQ 也不会在 之前创建任何表run,所以前三个标题语句不会做任何事情(你这样做只是因为你使用了titel1/2/3/4 - 如果你title每次使用,只有第四个会影响)。

您需要先添加分页符,然后添加标题(不幸的是,您没有将它们保留在 PROC FREQ 中,因此您可以将它们从中删除)。所以:

*ODS DOCUMENT creates the DOCUMENT object you will later modify;
ods document name=freqs(write);
** SINGLE PASS ON PROC FREQ **;
PROC FREQ DATA = TEST;
    TITLE "TEMPERATURE FREQS";
      TABLE TEMPERATURE / LIST OUT=FREQS_TEMP;
    TITLE "HUMIDITY FREQS";
      TABLE HUMIDITY / LIST OUT=FREQS_HUM;
    TITLE "PLATE FREQS";
      TABLE PLATE / LIST OUT=FREQS_PLATE;
    TITLE "FORM FREQS";
      TABLE FORM / LIST OUT=FREQS_FORM;
RUN;
title;
ods document close;


*PROC DOCUMENT is an interactive proc, so it stays active until QUIT;
proc document name=freqs;
  *Just a look at what it looks like under the hood - can be removed in production;
  list/levels=all;
run;

  *Here we create page breaks (OBPAGE command) after each table.;
  obpage \Freq#1\Table1#1\OneWayFreqs#1 /after;
  obpage \Freq#1\Table2#1\OneWayFreqs#1 /after;
  obpage \Freq#1\Table3#1\OneWayFreqs#1 /after;


  *Here we add the titles.;
  obtitle \Freq#1\Table1#1\OneWayFreqs#1 "TEMPERATURE FREQS";
  obtitle \Freq#1\Table2#1\OneWayFreqs#1 "HUMIDITY FREQS";
  obtitle \Freq#1\Table3#1\OneWayFreqs#1 "PLATE FREQS";
  obtitle \Freq#1\Table4#1\OneWayFreqs#1 "FORM FREQS";

  *And here we replay the document with the changes;
  replay ^;
run;

quit;
Run Code Online (Sandbox Code Playgroud)