列范围的 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() 会是更好的答案。
我想根据一系列列 (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() 会是更好的答案。