If statement 打印警告以记录if-then-else语句sas
我正在写一个if/then/else语句,其中最后的else是:If statement 打印警告以记录if-then-else语句sas,if-statement,logging,sas,warnings,If Statement,Logging,Sas,Warnings,我正在写一个if/then/else语句,其中最后的else是: if variable2 = 'foo' then variable = 'bar' else variable = . 我是否可以将自定义“警告”打印到包含变量2名称列表或数组的日志文件中 variable = . 可以使用PUTLOG语句将消息写入日志 if variable2 = 'foo' then variable = 'bar' ; else do; variable = . ; putlog "WA
if variable2 = 'foo' then variable = 'bar'
else variable = .
我是否可以将自定义“警告”打印到包含变量2名称列表或数组的日志文件中
variable = .
可以使用PUTLOG语句将消息写入日志
if variable2 = 'foo' then variable = 'bar' ;
else do;
variable = . ;
putlog "WARNING: bad value " variable2 = ;
end ;
可以使用PUTLOG语句将消息写入日志
if variable2 = 'foo' then variable = 'bar' ;
else do;
variable = . ;
putlog "WARNING: bad value " variable2 = ;
end ;
看起来OP想要一条包含所有相关变量名的消息。有多种方法可以做到这一点。。。最简单的方法是在此步骤完成后对输出数据集执行快速PROC SQL:
proc sql noprint;
select distinct variable2 into :bad_vals separated by ' '
from my_data
where variable = .
;
quit;
%put WARNING: Bad values of VARIABLE: &bad_vals;
这对于相对较小的数据集来说是很好的;对于大数据集,您可以在初始数据步骤运行时维护相关值的列表,并在数据步骤结束时只打印一次消息,从而避免额外的数据传递
data mydata;
length bad_vals $ 10000;
drop bad_vals;
set in end=end;
...blah...
...else do;
variable = .;
bad_vals = strip(bad_vals) || ' ' || variable2;
end;
if end then do;
putlog 'WARNING: Bad values of VARIABLE:' bad_vals;
end;
run;
或者您可以使用宏变量而不是数据步骤变量bad\u VAL等。看起来OP需要一条包含所有相关变量名称的消息。有多种方法可以做到这一点。。。最简单的方法是在此步骤完成后对输出数据集执行快速PROC SQL:
proc sql noprint;
select distinct variable2 into :bad_vals separated by ' '
from my_data
where variable = .
;
quit;
%put WARNING: Bad values of VARIABLE: &bad_vals;
这对于相对较小的数据集来说是很好的;对于大数据集,您可以在初始数据步骤运行时维护相关值的列表,并在数据步骤结束时只打印一次消息,从而避免额外的数据传递
data mydata;
length bad_vals $ 10000;
drop bad_vals;
set in end=end;
...blah...
...else do;
variable = .;
bad_vals = strip(bad_vals) || ' ' || variable2;
end;
if end then do;
putlog 'WARNING: Bad values of VARIABLE:' bad_vals;
end;
run;
或者,您可以使用宏变量而不是数据步骤变量bad\u vals等。为了确保它进入日志而不是fileref,最好是显式的,并使用putlog语句谢谢@Allan。旧习难改。更新。为了确保它进入日志而不是fileref,最好是显式的,并使用putlog语句谢谢@Allan。旧习难改。更新。