Macros 环路SAS中的ODS输出
我正在尝试将库中所有输出的比较结果输出到excel或pdf。这是我写的Macros 环路SAS中的ODS输出,macros,sas,Macros,Sas,我正在尝试将库中所有输出的比较结果输出到excel或pdf。这是我写的 %DO I = 1 %TO &coun; %LET DT = %SCAN (&DS_LIST., &I., ~); ods excel file="D:\test.xlsx"; PROC COMPARE BASE = BASE.&DT. COMPARE = COMPARE.&DT. OUTNOEQUAL OUTBASE OUTCOMP OUT = COMPAREOUT;
%DO I = 1 %TO &coun;
%LET DT = %SCAN (&DS_LIST., &I., ~);
ods excel file="D:\test.xlsx";
PROC COMPARE BASE = BASE.&DT. COMPARE = COMPARE.&DT. OUTNOEQUAL OUTBASE
OUTCOMP OUT = COMPAREOUT;
RUN
;
ods excel close;
但是,它只提供最后一个数据集输出。。这里怎么了 您尚未显示
%DO
循环的%END
。我假设您正在循环中打开和关闭ODS EXCEL目标。ODS EXCEL不会附加到现有文件,因此您只能从列表中的最后一个数据集获取比较输出。试试这个
* open ODS destination;
ods excel file="D:\test.xlsx";
* loop over data sets in DS_LIST, get compare report for each;
%DO I = 1 %TO &coun;
%LET DT = %SCAN (&DS_LIST., &I., ~);
PROC COMPARE BASE = BASE.&DT. COMPARE = COMPARE.&DT. OUTNOEQUAL OUTBASE
OUTCOMP OUT = COMPAREOUT;
RUN;
%END;
* close the ODS destination that contains the output from &coun comparisons;
ods excel close;
您是否尝试过将excel文件作为库加载?这样您就可以直接使用proc compare
LIBNAME xdbsss EXCEL PATH="<path and file>.XLSX" SCAN_TEXT=NO;
LIBNAME xdbsss EXCEL PATH=“.XLSX”扫描\文本=否;
Excel被用作此处的输出目标,而不是读入或任何内容。使用libname从PROC COMPARE将结果导入其中是没有意义的,因为表与输出没有很好地对齐。如果您不知道,使用libname作为libname还允许您在其中输出!ODS输出不会像ODS语句那样自动发送到libname。这种解决方案不能解决老年退休金问题。