Sas: разница между найти и индекс
Вы можете использовать функции НАЙТИ и ИНДЕКС в SAS, чтобы вернуть позицию первого символа подстроки, которая появляется внутри строки.
Разница между этими функциями в том, что функция НАЙТИ позволяет вам делать две вещи, которые не может сделать функция ИНДЕКС :
- НАЙТИ позволяет выполнять поиск без учета регистра.
- НАЙТИ позволяет указать начальную позицию для поиска.
Следующие примеры иллюстрируют разницу между функциями НАЙТИ и ИНДЕКС на практике со следующим набором данных в SAS, который содержит столбец предложения:
/*create dataset*/
data original_data;
input sentence $40. ;
datalines ;
A pig is my favorite animal
My name is piglet
Pigs are so cute
Here is a baby pig
His name is piggy
;
run ;
/*view dataset*/
proc print data = original_data;
Пример 1. Использование НАЙТИ и ИНДЕКС без различий
Следующий код показывает, как использовать функции НАЙТИ и ИНДЕКС для поиска позиции первого вхождения подстроки «свинья» в столбце выражения :
/*find position of first occurrence of 'pig' in phrase column*/
data new_data;
set original_data;
find_pig = find (phrase, 'pig');
index_pig = index (phrase, 'pig');
run ;
/*view results*/
proc print data = new_data;
Обратите внимание, что функции НАЙТИ и ИНДЕКС возвращают одинаковые результаты.
Столбцы find_pig и index_pig отобразить позицию первого вхождения подстроки «свинья» в столбце фразы .
Пример 2. Использование FIND и INDEX при поиске без учета регистра.
В следующем коде показано, как использовать функции НАЙТИ и ИНДЕКС для поиска позиции первого вхождения слова «СВИНЬЯ» в столбце выражения :
/*find position of first occurrence of 'PIG' in phrase column*/
data new_data;
set original_data;
find_pig = find (phrase, 'PIG', 'i');
index_pig = index (phrase, 'PIG');
run ;
/*view results*/
proc print data =new_data;
Используя модификатор «i» в функции НАЙТИ , мы смогли выполнить поиск без учета регистра подстроки «PIG» в столбце фразы.
Однако функция ИНДЕКС не может выполнять поиск без учета регистра, поэтому она просто возвращает 0 для каждой строки, поскольку подстрока «PIG» в верхнем регистре не существует ни в одном предложении.
Пример 3: Использование НАЙТИ и ИНДЕКС с определенной начальной позицией
Следующий код показывает, как использовать функцию НАЙТИ для поиска подстроки «свинья» в столбце фразы , начиная с позиции 5 , в то время как функция ИНДЕКС вообще не может использовать определенную начальную позицию:
/*find position of first occurrence of 'pig' in phrase column starting at position 5*/
data new_data;
set original_data;
find_pig = find (phrase, 'pig', 5 );
index_pig = index (phrase, 'pig');
run ;
/*view results*/
proc print data = new_data;
Функция find_pig ищет подстроку «свинья», начиная с позиции 5 столбца фразы .
Функция index_pig просто ищет подстроку «свинья» в любом месте столбца фразы , поскольку она не способна указать начальную позицию для поиска.
Дополнительные ресурсы
В следующих руководствах объясняется, как использовать другие распространенные функции в SAS:
Как использовать функцию SUBSTR в SAS
Как использовать функцию COMPRESS в SAS
Как использовать функцию COALESCE в SAS