Dopo aver preso dimestichezza con i primi rudimenti di SAS Base, in questo articolo ci occuperemo di come gestire le istruzioni condizionali.
Introduzione
Questo tipo di costrutto permette di eseguire una certa porzione di codice piuttosto che un’altra, una volta valutata a priori la condizione inserita.
Per comprendere meglio il concetto esposto qui sopra, che potrebbe risultare nuovo per chi non è avvezzo alla programmazione, partiamo da un semplice esempio. Questo e’ un classico caso in cui le istruzioni condizionali entrano nella nostra vita quotidiana. Supponiamo di dover cuocere un piatto di pasta, sappiamo che potremo buttare la pasta nella pentola con l’acqua solo se questa raggiunge la temperature di ebollizione, ovvero 100°C.
Proviamo quindi a scrivere in pseudocodice l’istruzione condizionale che formalizza il caso delineato sopra:
IF TemperaturaAcqua >= 100 THEN
Butta la pasta nella pentola
ENDIF
Si tratta dunque del caso più semplice possibile: If con istruzione singola e senza ramo else. In questo caso infatti e’ necessario compiere un’azione, buttare la pasta nella pentola, solo e soltanto quando l’acqua avrà raggiunto la temperature di ebollizione. Non essendo presente un ramo else nel costrutto, se la condizione non si verifica non dovremo fare nulla, o nel nostro caso attendere che l’acqua raggiunga la temperature di ebollizione, anche perché inizio ad avere fame!
Le istruzioni condizionali in SAS
Passiamo quindi a formalizzare e a generalizzare in SAS Base concetti introdotti tramite l’esempio pratico. In SAS esistono diversi modi di esprimere un’istruzione condizionale, in base alla particolare necessità:
- If con istruzione singola, con e senza ramo else:
L’istruzione da eseguire se la condizione viene valutata vera è una soltanto. Il caso in cui la condizione viene valutata falsa non deve essere necessariamente contemplato.
Senza ramo else:if condizione then istruzione-se-condizione-vera;
Con ramo else:
if condizione then istruzione-se-condizione-vera; else istruzione-se-condizione-falsa;
- If con istruzioni multiple, con e senza ramo else:
L’istruzione da eseguire se la condizione viene valutata vera è una soltanto. Il caso in cui la condizione viene valutata falsa non deve essere necessariamente contemplato.
Con ramo else:if condizione then do; istruzione-1-se-condizione-vera; istruzione-2-se-condizione-vera; ... istruzione-n-se-condizione-vera; end; else do; istruzione-1-se-condizione-falsa; istruzione-2-se-condizione-falsa; ... istruzione-n-se-condizione-falsa; end;
Senza ramo else:
if condizione then do; istruzione-1-se-condizione-vera; istruzione-2-se-condizione-vera; ... istruzione-n-se-condizione-vera; end;
Le istruzioni condizionali: Un esempio pratico
Vediamo ora un esempio di come utilizzare le istruzioni condizionali. Partiamo dall’esempio introdotto nell’articolo precedente e creiamo nuovamente un dataset eseguendo il seguente codice
data people_registry;
input id name $ surname $ sex $ age weight height;
datalines;
1 Julia Smith F 29 56 172
2 Mark Ronson M 47 78 182
3 Patrick Lane M 33 69 177
4 Allie White F 45 62 189
5 Owen Peterson M 39 71 176
;
run;
Utilizziamo ora le istruzioni condizionali per creare una variabie binaria che indica se il soggetto è di sesso maschile (assumendo il valore 1) o femminile (assumendo il valore 0). Queste variabili in gergo vengono anche chiamate dummy.
data new_people_registry; set people_registry; if sex = 'M' then is_male = 1; else is_male = 0; run;
proc print data=new_people_registry; run;
L’output conferma che la variabile creata si comporta come previsto.
Indice Articoli
Per agevolarti nella lettura di questa guida alla fine di ogni articolo viene riportato l’indice comprendente tutti gli argomenti trattati.
- Introduzione a SAS Base
- Le istruzioni condizionali in SAS Base