SAS中的IN子句

SAS中的IN子句,sas,Sas,我有以下数据集 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的初学者。请帮我写下的语法

我有以下数据集

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',那么把'valid';else put'invalid'

看起来您希望扫描输入数据中的所有(选定)行,并测试其中是否有
ID='a'
。在子句中不能使用
;这是针对每行的一组值进行测试,而不是针对所有行的一个值进行测试

data _null_;
    set a (where=(id = &inp);
    if id = 'a' then do;
        put 'valid';
        stop;
    end;
run;

因为这里有一个
where
语句,所以您选择的所有id肯定都是有效的?也就是说,您正在选择id=&inp
所在的所有行,因此如果您的变量
&inp='a'
,则新数据集的所有行都将有效。对不起,我错过了一些东西