SAS如果然后对列范围进行陈述



我想创建一个基于一系列列(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;

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

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

find()用于在更长的字符串中定位特定的子字符串,因此无法一次对许多变量进行工作。

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

最新更新