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