首页 > 解决方案 > 循环 SAS 中的 ODS 输出

问题描述

我正在尝试将库中所有输出的比较结果输出到 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; 
RUN
;  
ods excel close; 

但是它只给了我最后一个数据集输出..这里有什么问题?

标签: macrossas

解决方案


您还没有显示%ENDfor%DO循环。我假设您正在循环内打开和关闭 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; 

推荐阅读