Cartello con le istruzioni condizionali

Le istruzioni condizionali in SAS Base

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.

butta la pasta
Se l’acqua bolle… butta la pasta!

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;
Grazie a questo data step siamo in grado di creare un nuovo dataset chiamato new_people_registry contenente la nuova variabile is_male.
Stampiamo ora a schermo il contenuto del dataset così ottenuto utilizzando la funzione proc print.
Questa funzione consente di stampare a schermo il contenuto del dataset. Ecco il codice necessario a generare l’output:
proc print data=new_people_registry;
run;
Questo invece l’output generato a schermo:

The SAS System
Oss id name surname sex age weight height is_male
1 1 Julia Smith F 29 56 172 0
2 2 Mark Ronson M 47 78 182 1
3 3 Patrick Lane M 33 69 177 1
4 4 Allie White F 45 62 189 0
5 5 Owen Peterson M 39 71 176 1

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.

  1. Introduzione a SAS Base
  2. Le istruzioni condizionali in SAS Base

Pubblicato

in

da