Sas: różnica między znajdź a indeksem
Możesz użyć funkcji ZNAJDŹ i INDEKS w SAS-ie, aby zwrócić pozycję pierwszego znaku podciągu, który pojawia się w ciągu.
Różnica między tymi funkcjami polega na tym, że funkcja ZNAJDŹ umożliwia wykonanie dwóch rzeczy, których funkcja INDEKS nie może wykonać:
- ZNAJDŹ umożliwia wyszukiwanie bez uwzględniania wielkości liter.
- ZNAJDŹ umożliwia określenie pozycji początkowej wyszukiwania.
Poniższe przykłady ilustrują różnicę pomiędzy funkcjami ZNAJDŹ i INDEKS w praktyce z następującym zbiorem danych w SAS-ie, który zawiera kolumnę zdaniową:
/*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;
Przykład 1: Używanie funkcji ZNAJDŹ i INDEKS bez różnic
Poniższy kod pokazuje, jak używać funkcji ZNAJDŹ i INDEKS , aby znaleźć pozycję pierwszego wystąpienia podłańcucha „pig” w kolumnie wyrażenia :
/*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;
Należy pamiętać, że funkcje ZNAJDŹ i INDEKS zwracają dokładnie te same wyniki.
Kolumny find_pig i indeks_pig wyświetlić pozycję pierwszego wystąpienia podciągu „świnia” w kolumnie frazy .
Przykład 2: Używanie funkcji FIND i INDEX przy wyszukiwaniu bez uwzględniania wielkości liter
Poniższy kod pokazuje, jak używać funkcji ZNAJDŹ i INDEKS , aby znaleźć pozycję pierwszego wystąpienia słowa „PIG” w kolumnie wyrażenia :
/*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;
Używając modyfikatora „i” w funkcji ZNAJDŹ , mogliśmy przeprowadzić wyszukiwanie bez uwzględniania wielkości liter podciągu „PIG” w kolumnie frazy.
Jednakże funkcja INDEX nie jest w stanie przeprowadzić wyszukiwania bez uwzględniania wielkości liter, więc po prostu zwróciła 0 dla każdego wiersza, ponieważ podciąg wielkich liter „PIG” nie istniał w żadnym zdaniu.
Przykład 3: Używanie funkcji ZNAJDŹ i INDEKS z określoną pozycją początkową
Poniższy kod pokazuje, jak użyć funkcji ZNAJDŹ , aby znaleźć podciąg „świnia” w kolumnie frazy , zaczynając od pozycji 5, podczas gdy funkcja INDEX w ogóle nie ma możliwości użycia określonej pozycji początkowej:
/*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;
Funkcja find_pig wyszukuje podciąg „świnia”, zaczynając od pozycji 5 kolumny frazy .
Funkcja indeks_pig po prostu wyszukuje podciąg „świnia” w dowolnym miejscu kolumny frazy , ponieważ nie jest w stanie określić pozycji początkowej wyszukiwania.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak używać innych popularnych funkcji w SAS-ie:
Jak korzystać z funkcji SUBSTR w SAS-ie
Jak korzystać z funkcji COMPRESS w SAS-ie
Jak korzystać z funkcji COALESCE w SAS-ie