Programmazione SAS, i dataset

In questo articolo approfondiamo la struttura base per l’elaborazione dei dati in SAS.

Principi base

Il dataset, molto semplicemente, è una struttura che contiene i dati da elaborare o mostrare.
I dataset all’interno di SAS vengono custoditi in librerie che raccolgono un insieme di dataset.
la libreria base di SAS si chiama work bisogna considerare tale libreria come se lavorasse esclusivamente in memoria: se avviene un riavvio (o anche un fail) del sistema il contenuto di tale libreria verrà azzerato. L’esplicitazione della libreria work è facoltativa.

La dichiarazione più semplice di un dataset è la seguente:

Data targetdataset;
set work.mydataset;
run;

Il dataset “targetdataset” ora punterà al valore presente nel dataset “mydataset”, ricordiamo che entrambi i dataset sono contenuti nella libreria work.

Caricamento dataset da codice

Il dataset può essere caricato mediante file, mediante database o in altri modi, in questo contesto ci limitiamo a mostrare il caricamento del dataset da codice utilizzando l’istruzione datalines:

data weight2;
input IDnumber $ Week1 Week16;
WeightLoss2=Week1-Week16;
datalines;
2477 195 163
2431 220 198
2456 173 155
2412 135 116
;

L’istruzione input ci permette di definire quali colonne verranno lette tramite l’istruzione datalines.
Utilizzare colonne in questo caso è improprio: essendo SAS nato per la statistica pertanto è più pertinente chiamare le colonne variabili.

Il simbolo del $ permette di dire che la variabile “IDnumber” è una  stringa, mentre Week1 e Week16 sono da considerarsi numeri.

Tra l’istruzione datalines e il ; sono presenti l’insieme delle tuple presenti nel dataset.

Anche utilizzare tuple in questo caso è improprio: è pertinente chiamare le tuple osservazioni.

Logica dei dataset

Bisogna considerare che SAS all’atto della definizione di un dataset ne effettua una vera e propria costruzione ciclica. In particolare utilizzando l’istruzione data si crea un ciclo per cui ad ogni elemento in input viene creato un elemento nel dataset. Ad esempio:

Data targetdataset;
retain acc;
  set work.mydataset;
  acc = acc + col;
run;

Nel dataset targetdataset per ogni occorrenza presente in mydataset verrà aggiunta alla variabile acc il valore di col. L’istruzione retain permette di conservare il valore di acc attraverso le iterazioni.

Selezionare le variabili

Si possono proiettare dal dataset le variabili utilizzando l’istruzione drop. Per il mondo database è come indicare le colonne nella clausola “select”.

Esempio:

Data targetdataset;
  set work.mydataset;
  drop mywork;
run;

Nel dataset targetdataset verrà eliminata la variabile mywork che tuttavia resterà nel dataset mydataset.

L’istruzione keep è il duale dell’opzione drop poiché con la stessa sintassi permette di mantenere nell’esempio precedente solo la variabile mywork.

Selezionare le osservazioni

Per selezionare le osservazioni dal dataset si utilizza, mutuandola dal mondo database l’opzione where.  Anche la sintassi in questo caso è mutuata dal mondo database.

Data targetdataset;
  set work.mydataset;
  where country=’av’ and job_title contains ‘rep’;
run;

Nel caso in cui un valore della variabile è missing, l’intera esprezione risulterà missing. Questo ha un forte impatto sopratutto nelle espressioni aritmetiche poiché laddove si potrebbe pensare a una valorizzazione con 0, l’esistenza di missing dev’essere considerata attentamente.

Missing è simile al “null” del paradigma Object Oriented, ma molto diverso da 0. Ad esempio:

Data targetdataset;
set work.mydataset;
c=a+b;
where c > 0;
run;

Se a =4  e b è missing il valore di c sarà missing. La where non prenderà mai in considerazione l’osservazione e non la mostrerà a video.

Lascia un commento

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