Sas: la differenza tra trova e indice
È possibile utilizzare le funzioni TROVA e INDICE in SAS per restituire la posizione del primo carattere di una sottostringa visualizzata all’interno di una stringa.
La differenza tra queste funzioni è che la funzione TROVA ti consente di fare due cose che la funzione INDICE non può fare:
- TROVA consente di eseguire una ricerca senza distinzione tra maiuscole e minuscole.
- TROVA consente di specificare una posizione iniziale per la ricerca.
I seguenti esempi illustrano nella pratica la differenza tra le funzioni TROVA e INDICE con il seguente set di dati in SAS che contiene una colonna di frasi:
/*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;
Esempio 1: utilizzo di FIND e INDEX senza differenze
Il codice seguente mostra come utilizzare le funzioni FIND e INDEX per trovare la posizione della prima occorrenza della sottostringa “pig” nella colonna dell’espressione :
/*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;
Tieni presente che le funzioni TROVA e INDICE restituiscono esattamente gli stessi risultati.
Le colonne find_pig e index_pig visualizza la posizione della prima occorrenza della sottostringa “pig” nella colonna della frase .
Esempio 2: utilizzo di FIND e INDEX con una ricerca senza distinzione tra maiuscole e minuscole
Il codice seguente mostra come utilizzare le funzioni FIND e INDEX per trovare la posizione della prima occorrenza della parola “PIG” nella colonna dell’espressione :
/*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;
Utilizzando il modificatore “i” nella funzione TROVA , siamo stati in grado di eseguire una ricerca senza distinzione tra maiuscole e minuscole per la sottostringa “PIG” nella colonna della frase.
Tuttavia, la funzione INDICE non è in grado di eseguire una ricerca senza distinzione tra maiuscole e minuscole, quindi restituisce semplicemente 0 per ogni riga poiché la sottostringa maiuscola “PIG” non esiste in nessuna frase.
Esempio 3: utilizzo di FIND e INDEX con una posizione iniziale specifica
Il codice seguente mostra come utilizzare la funzione FIND per trovare la sottostringa “pig” nella colonna della frase che inizia dalla posizione 5 mentre la funzione INDEX non è affatto in grado di utilizzare una posizione iniziale specifica:
/*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;
La funzione find_pig cerca la sottostringa ‘pig’ a partire dalla posizione 5 della colonna della frase .
La funzione index_pig cerca semplicemente la sottostringa “pig” ovunque nella colonna della frase poiché non è in grado di specificare una posizione iniziale per la ricerca.
Risorse addizionali
I seguenti tutorial spiegano come utilizzare altre funzioni comuni in SAS:
Come utilizzare la funzione SUBSTR in SAS
Come utilizzare la funzione COMPRIMERE in SAS
Come utilizzare la funzione COALESCE in SAS