0

我有以下数据集

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”,则输入“有效”;否则输入“无效”

4

2 回答 2

2

看起来您想扫描输入数据中的所有(选定)行,并测试其中是否有ID = 'a'. 您不要使用IN子句来执行此操作;这是针对每一行的一组值进行测试,而不是针对所有行的一个值进行测试。

data _null_;
    set a (where=(id = &inp);
    if id = 'a' then do;
        put 'valid';
        stop;
    end;
run;
于 2013-08-29T13:52:26.660 回答
0

既然您在where这里有一个声明,那么您选择的所有 id 肯定都是有效的吗?即您正在选择其中的所有行id = &inp,因此如果您的变量&inp = 'a'那么新数据集的所有行都将有效。抱歉,如果我在这里遗漏了什么!

于 2013-08-29T14:38:50.413 回答