检查列

时间:2015-09-30 23:51:38

标签: sas

有没有办法选择列中的所有值,然后检查整个列是否只包含某些参数?这是我尝试过的代码,但我可以看出为什么它没有做我想要的:

IF City = "8" or
   City = "12" or
   City = "15" or
   City = "24" or
   City = "35"
THEN put "All cities are within New York";

我正在尝试选择“城市”上的整个列,并检查该列是否仅包含这5个值。如果它只包含那5个值,那么我希望它打印到日志中说明。但是,我可以看到我的方法检查每一行是否包含其中一行,如果即使只有一行包含其中一行,它也会打印到日志中。所以我在日志中获得了每个实例的打印。

我想做的是:

want-- IF (all of)City includes 8 & 12 & 15 & 24 & 35
       THEN put "All cities are within New York."

2 个答案:

答案 0 :(得分:1)

如果您的值列表中没有任何观察值,您只需要测试。

data _null_;
   if eof then put 'All cities are within New York';
   set have end=eof;
   where not (city in ('8','12','15','24','35') );
   put 'Found city NOT within New York. ' CITY= ;
   stop;
run;

答案 1 :(得分:0)

SQL替代方案可能是:

proc sql;
select case when sum(not city in ('8','12','15','24','35'))>0 then 'Found city NOT within New York' else 'All cities are within New York' end 
from have;
quit;

与日志中显示的不同,并不像@Tom提供的那样高效。