gpt4 book ai didi

performance - SAS:PROC FREQ 或 PROC REPORT 的单个表标题?

转载 作者:行者123 更新时间:2023-12-04 20:36:09 29 4
gpt4 key购买 nike

而不是执行多个单独的 PROC FREQ一个非常大的数据集上的程序,我想通过执行单个 PROC FREQ 来提高效率与多个 TABLE声明。我们的 QA 流程需要表格标题,这很简单,只需一个 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;

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

最佳答案

一种选择是使用 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;

关于performance - SAS:PROC FREQ 或 PROC REPORT 的单个表标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35318058/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com