Sas: het verschil tussen find en index


U kunt de functies FIND en INDEX in SAS gebruiken om de positie te retourneren van het eerste teken van een subtekenreeks die binnen een tekenreeks voorkomt.

Het verschil tussen deze functies is dat u met de functie FIND twee dingen kunt doen die de functie INDEX niet kan doen:

  • Met FIND kunt u hoofdletterongevoelig zoeken.
  • Met FIND kunt u een startpositie voor de zoekopdracht opgeven.

De volgende voorbeelden illustreren het verschil tussen de functies FIND en INDEX in de praktijk met de volgende gegevensset in SAS die een zinkolom bevat:

 /*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; 

Voorbeeld 1: FIND en INDEX gebruiken zonder verschillen

De volgende code laat zien hoe u de functies FIND en INDEX kunt gebruiken om de positie te vinden van de eerste keer dat de subtekenreeks „pig“ voorkomt in de expressiekolom :

 /*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;

Houd er rekening mee dat de functies FIND en INDEX exact dezelfde resultaten opleveren.

De kolommen find_pig en index_pig geef de positie weer van de eerste keer dat de subtekenreeks “pig” voorkomt in de zinskolom .

Voorbeeld 2: FIND en INDEX gebruiken met een hoofdletterongevoelige zoekopdracht

De volgende code laat zien hoe u de functies FIND en INDEX gebruikt om de positie te vinden van de eerste keer dat het woord „PIG“ voorkomt in de expressiekolom :

 /*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;

Met behulp van de „i“ -modifier in de FIND- functie konden we een hoofdletterongevoelige zoekopdracht uitvoeren voor de „PIG“-subtekenreeks in de zinskolom.

De INDEX- functie kan echter geen hoofdletterongevoelige zoekopdracht uitvoeren, dus retourneert deze eenvoudigweg 0 voor elke rij, aangezien de subtekenreeks „PIG“ in hoofdletters in geen enkele zin voorkomt.

Voorbeeld 3: FIND en INDEX gebruiken met een specifieke startpositie

De volgende code laat zien hoe u de FIND- functie kunt gebruiken om de subtekenreeks „pig“ te vinden in de woordgroep , beginnend op positie 5, terwijl de INDEX- functie helemaal geen specifieke startpositie kan gebruiken:

 /*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;

De functie find_pig zoekt naar de subtekenreeks ‚pig‘, beginnend vanaf positie 5 van de zinskolom .

De functie index_pig zoekt eenvoudigweg naar de subtekenreeks „pig“ waar dan ook in de zinskolom , omdat deze niet in staat is een startpositie voor de zoekopdracht te specificeren.

Aanvullende bronnen

In de volgende zelfstudies wordt uitgelegd hoe u andere veelvoorkomende functies in SAS kunt gebruiken:

Hoe de SUBSTR-functie in SAS te gebruiken
Hoe de COMPRESS-functie in SAS te gebruiken
Hoe de COALESCE-functie in SAS te gebruiken

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert