Я реализовал IF-statement
в программе SAS
, которая в основном проверяет достоверность сравнения по годам.Если IF-statement
равно TRUE
, то некоторые другие переменные инициализируются и вычисляются, если IF-statement
равно FALSE
, то ничего не происходит.
Однако я только что понял, что независимо от того, является ли IF-statement
TRUE
или FALSE
, дополнительные переменные будут инициализированы (хотя MISSING
в случае FALSE
) и отображены вODS
.Это почему?Есть ли прямой способ решить это?Я, конечно, мог бы использовать условное drop-statement
, но это всегда утомительно, чтобы добавить это.
data test;
value = 1;
if value > 2019 then a = 1;
/*
if value < 2019 then
do;
drop a;
end;
*/
run;
РЕДАКТИРОВАТЬ: Опять же, я только что понял, что drop-statement
также всегда будет падать безимеет значение, если TRUE/FALSE
.
Решение но не знаю, почему оно работает :
data test;
%let value = 1;
%if &value. > 2019 %then %do; a = 1; %end;
run;
Пока копаясь, я нашел этот пост sas-сообщества .Кажется, моя проблема в основном связана с разницей %IF vs IF
.Применяя MACRO %IF
, это работает.Пост кажется немного устаревшим, в отличие от поста, который можно сейчас использовать MACRO %IF
вне MACRO
.