SAS IF THEN列范围语句

时间:2019-03-07 20:29:22

标签: sas range conditional datastep

我想基于一系列列(GAP1-GAP5)创建一个新列。我想使用这样的东西:

IF FIND(GAP1-GAP5,'New Start') THEN FILTER_NewStart=1

但出现错误,因此必须使用此:

IF FIND(GAP1,'New Start') OR FIND(GAP2,'New Start') OR FIND(GAP3,'New Start') 
  OR FIND(GAP4,'New Start') OR FIND(GAP5,'New Start') THEN FILTER_NewStart=1;

我需要使用循环还是可以对一系列列使用函数来实现这一目标?

3 个答案:

答案 0 :(得分:0)

尝试串联它们,并在变量上使用find

if(find(cat(of GAP1-GAP5), 'New Start') ) then FILTER_NewStart = 1;

答案 1 :(得分:0)

听起来像您想使用WHICHC()函数在等于特定值的变量列表中找到第一个变量。如果没有,则结果为零。

FILTER_NewStart=0 ne whichc('New Start',of GAP1-GAP5);

FIND()用于在较长的字符串中定位特定的子字符串,因此无法一次处理多个变量。

答案 2 :(得分:0)

@Tom whichc()是个好主意,但是如果GAP1-GAP5仅包含但不等于“ New Start”,则它不起作用。在这种情况下,find()会更好。

相关问题