列范围的 SAS IF THEN 语句

SAS IF THEN Statement for Range of Columns

我想根据一系列列 (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;

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

尝试连接它们并在变量上使用 find

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

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

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

FIND() 用于在较长的字符串中定位特定的子字符串,因此不能同时处理多个变量。

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