我有以下数据集
data a;
input id stat$;
datalines;
10 a
20 a
10 t
40 t
;
run;
我正在写下面的宏
%macro ath(inp);
data _null_;
set a (where=(id=&inp);
----if any one of the status of ID is 'a' then put 'valid';
else put 'invalid';----
%mend;
我是SAS的初学者。请帮我编写语法 - 如果ID的任何一个状态是'a',那么把'有效';否则就把'无效'
答案 0 :(得分:2)
您希望扫描输入数据中的所有(选定)行,并测试其中是否有ID = 'a'
行。你没有用IN
子句做到这一点;这是针对每行的一组值进行测试,而不是针对所有行测试一个值。
data _null_;
set a (where=(id = &inp);
if id = 'a' then do;
put 'valid';
stop;
end;
run;
答案 1 :(得分:0)
由于此处有where
语句,您选择的所有ID肯定都有效吗?即您正在选择id = &inp
的所有行,因此,如果您的变量&inp = 'a'
,那么新数据集的所有行都将有效。对不起,如果我在这里错过了什么!