我正在尝试做一件简单的事情 - 在DATA语句中写入PROC REPORT过程。我的主要想法是 - 如果数据步骤中的条件为真 - 让我们执行PROC REPORT,如果它是假的 - 不要执行PROC REPORT。有任何想法吗?代码现在可以毫无错误地运行,但是我发现IF语句中的条件没有被应用,并且尽管条件没有被满足,PROC REPORT仍然是可执行的。SAS中的DATA中的PROC报告
先谢谢您。
%let DATO = 13062016;
PROC IMPORT OUT= WORK.auto1 DATAFILE= "C:\Users\BC1554\Desktop\andel.xlsx"
DBMS=xlsx REPLACE;
SHEET="sheet1";
GETNAMES=YES;
RUN;
data want;
set WORK.auto1;
rownum=_n_;
run;
DATA tbl2;
SET want;
if (rownum => 1 and rownum <=6) then output work.tbl2 ;
RUN;
ODS NORESULTS;
ods LISTING close;
ODS RTF FILE="C:\Users\BC1554\Desktop\Statistik_andel_&DATO..rtf";
title "Statistics from monthly run of DK shares of housing companies (andelsboliger)";
data Tbl21 ;
set work.Tbl2;
where (DKANDEL='Daekning_pct_24052016' or DKANDEL='Daekning_pct_18042016') ;
difference = dif(Andel);
difference1 = dif(Total);
run;
data Tbl211 ;
set work.Tbl21;
where (DKANDEL='Daekning_pct_18042016') ;
run;
data Tbl2111 ;
set work.Tbl211;
where (DKANDEL='Daekning_pct_18042016') ;
if abs(difference) > 10 and abs (difference1) > 107 then ;
run;
proc report data= work.Tbl2 spanrows;
columns DKANDEL Andel Total Ukendt ;
title2 "-";
title3 "We REPORT numbers on p.4-5".;
title4 "-";
title5 "The models coverage";
title6 "Run date &DATO.";
footnote1 "Assets without currency code not included";
define DKANDEL/order;
define Andel /order;
define Total /order;
define Ukendt/order;
define DKANDEL/ display;
define Andel/display;
Compute DKANDEL;
call define (_col_,"style","style={background=orange}");
endcomp;
Compute Andel;
call define (_col_,"style","style={background=red}");
endcomp;
run; title; footnote1;
ODS RTF close;
ODS LISTING;
title;
run;
不知道是否理解你的问题。因此,如果条件是'如果abs(差异)> 10和abs(差异1)> 107那么;'并且取决于结果proc报告应该被执行?如果是这样的话,那就不会像你编写它的方式那样工作,你需要使用宏变量来做... – kl78
嗨,kl78, 是的,如果条件满足,那么就要超越PROC REPORT。 – BC1554