SAS IF THEN声明列范围

问题描述 投票:0回答:3

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

我是否需要使用循环或者是否可以使用一系列列的函数来实现此目的?

sas range conditional datastep
3个回答
0
投票

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

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

0
投票

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.