Sas: come dividere le stringhe per delimitatore


È possibile utilizzare la funzione scan() in SAS per dividere rapidamente una stringa in base a un particolare delimitatore.

L’esempio seguente mostra come utilizzare questa funzione nella pratica.

Esempio: dividere le stringhe per delimitatore in SAS

Supponiamo di avere il seguente set di dati in SAS:

 /*create dataset*/
data my_data1;
    input name $25.;
    datalines ;
Andy_Lincoln_Bernard
Barry_Michael
Chad_Simpson_Smith
Derrick_Parson_Henry
Eric_Miller
Frank_Giovanni_Goodwill
;
run ;

/*print dataset*/
proc print data =my_data1;

Possiamo usare il seguente codice per dividere rapidamente la stringa del nome in tre stringhe separate:

 /*create second dataset with name split into three columns*/
data my_data2;
set my_data1;
    name1= scan (name, 1 , '_');
    name2= scan (name, 2 , '_');
    name3= scan (name, 3 , '_');
run ;

/*view second dataset*/
proc print data =my_data2; 

Tieni presente che la stringa della colonna del nome è stata divisa in tre nuove colonne.

Per i nomi per i quali esiste un solo delimitatore, il valore nella colonna name3 è semplicemente vuoto.

Tieni presente che potremmo anche utilizzare la funzione drop per rimuovere la colonna del nome originale dal nuovo set di dati:

 /*create second dataset with name split into three columns, drop original name*/
data my_data2;
set my_data1;
    name1= scan (name, 1 , '_');
    name2= scan (name, 2 , '_');
    name3= scan (name, 3 , '_');
    dropname ;
run ;

/*view second dataset*/
proc print data =my_data2; 

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in SAS:

Come normalizzare i dati in SAS
Come rinominare le variabili in SAS
Come rimuovere i duplicati in SAS
Come sostituire i valori mancanti con zero in SAS

Aggiungi un commento

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