限制 SAS ODS 输出中的观察数量
Limiting number of observations in SAS ODS output
我正在尝试限制 ODS 输出中包含的观察数量 table。
我的尝试很简单:
OPTIONS NODATE number pageno=1 rightmargin=0.25in leftmargin=0.25in topmargin=0.4in bottommargin=0.4in;
options sysprintfont=("SAS Monospace" normal regular 8 ALL) orientation=landscape;
ODS LISTING CLOSE;
ODS NORESULTS;
ods TAGSETS.EXCELXP PATH="C:\TEMP" FILE= "&Place._RequiredFlaggedRecords.XML" STYLE=NORMALPRINTER;
/*Sets number of observations allowed per ODS*/
%let obs=100;
ODS TAGSETS.EXCELXP OPTIONS (EMBEDDED_TITLES='YES' EMBEDDED_FOOTNOTES='YES' SHEET_NAME='Outdated');
proc print data=&Place (obs=&obs) (rename = (CREATE_DATE = DATE_PROCESSED EARLIEST_DATE_TIME=VISIT_DATE_TIME EARLIEST_DATE=VISIT_DATE)) noobs;
var
DATEDIFF
DATE_PROCESSED
VISIT_DATE
VISIT_DATE_TIME
;
WHERE DATEDIFF >=60 ;
title1 j=l "Outdated Records " ;
title2 j=l 'This page reflects the records which were received more than 60 days following';
RUN;
日志文件returns:
NOTE: Line generated by the macro variable "OBS".
1 100
---
22
76
ERROR 22-322: Expecting a quoted string.
ERROR 76-322: Syntax error, statement will be ignored.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used (Total process time):
real time 0.09 seconds
cpu time 0.01 seconds
尝试使用 %eval
将 100 设为数字而不是字符。还将 &obs 替换为 100 而不是使用宏。两者的结果都和上面一样。
如有任何帮助,我们将不胜感激!
您的问题很可能是您有第二组括号。这很好用:
ods html file="c:\temp\blah.html" path="";
proc print data=sashelp.class(obs=10 rename=name=namer);
run;
ods html close;
您的错误与未将 obs=10
放入重命名的括号内一致。如果您像上面那样(两组括号),则会发生不同的错误。将所有数据集选项放在一组括号中。
需要说明的是,这不是 ODS 相关的选项。这是一个数据集选项,仅此而已。并且宏变量没有 "types" 所以 %eval
在这里是无关紧要的。
我正在尝试限制 ODS 输出中包含的观察数量 table。 我的尝试很简单:
OPTIONS NODATE number pageno=1 rightmargin=0.25in leftmargin=0.25in topmargin=0.4in bottommargin=0.4in;
options sysprintfont=("SAS Monospace" normal regular 8 ALL) orientation=landscape;
ODS LISTING CLOSE;
ODS NORESULTS;
ods TAGSETS.EXCELXP PATH="C:\TEMP" FILE= "&Place._RequiredFlaggedRecords.XML" STYLE=NORMALPRINTER;
/*Sets number of observations allowed per ODS*/
%let obs=100;
ODS TAGSETS.EXCELXP OPTIONS (EMBEDDED_TITLES='YES' EMBEDDED_FOOTNOTES='YES' SHEET_NAME='Outdated');
proc print data=&Place (obs=&obs) (rename = (CREATE_DATE = DATE_PROCESSED EARLIEST_DATE_TIME=VISIT_DATE_TIME EARLIEST_DATE=VISIT_DATE)) noobs;
var
DATEDIFF
DATE_PROCESSED
VISIT_DATE
VISIT_DATE_TIME
;
WHERE DATEDIFF >=60 ;
title1 j=l "Outdated Records " ;
title2 j=l 'This page reflects the records which were received more than 60 days following';
RUN;
日志文件returns:
NOTE: Line generated by the macro variable "OBS".
1 100
---
22
76
ERROR 22-322: Expecting a quoted string.
ERROR 76-322: Syntax error, statement will be ignored.
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used (Total process time):
real time 0.09 seconds
cpu time 0.01 seconds
尝试使用 %eval
将 100 设为数字而不是字符。还将 &obs 替换为 100 而不是使用宏。两者的结果都和上面一样。
如有任何帮助,我们将不胜感激!
您的问题很可能是您有第二组括号。这很好用:
ods html file="c:\temp\blah.html" path="";
proc print data=sashelp.class(obs=10 rename=name=namer);
run;
ods html close;
您的错误与未将 obs=10
放入重命名的括号内一致。如果您像上面那样(两组括号),则会发生不同的错误。将所有数据集选项放在一组括号中。
需要说明的是,这不是 ODS 相关的选项。这是一个数据集选项,仅此而已。并且宏变量没有 "types" 所以 %eval
在这里是无关紧要的。