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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *