Sas: різниця між find та index


Ви можете використовувати функції FIND та INDEX у SAS, щоб повернути позицію першого символу підрядка, який з’являється в рядку.

Різниця між цими функціями полягає в тому, що функція FIND дозволяє вам робити дві речі, які функція INDEX не може:

  • FIND дозволяє виконувати пошук без урахування регістру.
  • FIND дозволяє вказати початкову позицію для пошуку.

Наведені нижче приклади ілюструють різницю між функціями FIND та INDEX на практиці з таким набором даних у 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 та INDEX без відмінностей

У наступному коді показано, як використовувати функції FIND та INDEX , щоб знайти позицію першого входження підрядка “pig” у стовпці виразу :

 /*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 та INDEX повертають однакові результати.

Стовпці find_pig і index_pig відобразити позицію першого входження підрядка «pig» у стовпчику фрази .

Приклад 2: Використання FIND та INDEX із пошуком без урахування регістру

У наведеному нижче коді показано, як використовувати функції FIND та INDEX , щоб знайти позицію першого входження слова “PIG” у стовпці виразу :

 /*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» у функції FIND , ми змогли виконати без урахування регістру пошук підрядка «PIG» у стовпці фрази.

Однак функція INDEX не може здійснювати пошук без урахування регістру, тому вона просто повертає 0 для кожного рядка, оскільки підрядка «PIG» у верхньому регістрі не існує в жодному реченні.

Приклад 3: використання FIND та INDEX із певною початковою позицією

У наступному коді показано, як за допомогою функції FIND знайти підрядок “pig” у стовпці фрази , починаючи з позиції 5, тоді як функція INDEX взагалі не може використовувати конкретну початкову позицію:

 /*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 шукає підрядок “pig”, починаючи з позиції 5 стовпця фрази .

Функція index_pig просто шукає підрядок “pig” у будь-якому місці стовпця фрази , оскільки вона не здатна вказати початкову позицію для пошуку.

Додаткові ресурси

У наступних посібниках пояснюється, як використовувати інші поширені функції в SAS:

Як використовувати функцію SUBSTR у SAS
Як використовувати функцію СТИСНУТИ в SAS
Як використовувати функцію COALESCE у SAS

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *