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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *