Отправленный код проверяет, совпадает ли ЛЮБОЙ из списка переменных ЛЮБОЙ из списка значений.
Давайте сделаем простой набор тестовых данных.
data have ;
input id (var1-var5) ($);
cards;
1 E F G H I
2 A B C D E
;;;;
Создайте один массив значений, которые вы хотите найти, и один массив переменных, которые вы хотите проверить. Перебирайте список переменных, пока не найдете то, которое содержит одно из значений, или не исчерпаете переменные для проверки.
data want ;
set have;
array values (4) $8 _temporary_ ('A' 'B' 'C' 'D');
array vars var1-var5 ;
group=0;
do i=1 to dim(vars) until (group=1);
if vars(i) in values then group=1;
end;
drop i;
run;
Вы можете избежать массива для списка значений, если хотите.
if vars(i) in ('A' 'B' 'C' 'D') then group=1;
Но использование массива позволит вам запустить цикл по списку значений вместо списка переменных.
do i=1 to dim(values) until (group=1);
if values(i) in vars then group=1;
end;
Что может быть важно, если вы хотите сохранить переменную i
, чтобы указать, какое значение (или переменная) было впервые найдено.