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.

Programmazione SAS, fondamenti

Con questo articolo inauguro una nuova serie di articoli riguardanti le fondamenta di SAS.

Cos’è SAS?

SAS è l’acronimo di “Statistical Analysis System” ed è una suite di prodotti software che permettono di effettuare tutte quelle operazioni ricorrenti negli ambiti in cui si effettua l’analisi di grandi moli di dati.

Le componenti basilari di SAS sono le seguenti:

Base SAS Software, utilizzato per l’import e la gestione dei dati
SAS procedures software, per l’analisi, operazioni comuni sui dati ed il reporting
Macro facility, per estendere e personalizzare le applicazioni
DATA step debugger, il debugger utilizzato da SAS.
Output Delivery System (ODS), permette di effettuare l’output dei risultati ottenuti in SAS.
SAS windowing environment/SAS Studio, sono softtware che permettono di eseguire e testare le applicazioni sviluppate in SAS.

I contenuti di questa serie di Articoli

L’idea che c’è dietro questi articoli è di far comprendere al lettore cos’è un Software SAS, mostrarne le potenzialità, le fondamenta e qualche limite.
Non mi soffermerò dietro alle finezze o ai casi particolari in quanto tali, tenterò di concentrarmi maggiormente sulle istruzioni basilari e sugli aspetti come i vantaggi e gli svantaggi nell’utilizzo della piattaforma.

Le fondamenta  di un software SAS

I software SAS sono essenzialmente composti da due tipologie di istruzioni.

  1. Data step
  2. Proc Procedure

Il Data Step si utilizza in per creare nuovi Dataset o per effettuare degli output su file in formato testo.
Le Proc procedure effettuano operazioni su Dataset o permettono di effettuare operazioni di analisi e reportistica su essi.

Questa suddivisione già ci permette di capire come utilizzare SAS: importare dati, manipolarli e utilizzarli. È tutto qui: il focus sono i dati, il software permette di gestire molte fonti di input ed è in grado di catturare gran parte delle eccezioni e/o sfumature degli stessi.

Un semplice Data Step è il seguente:

data myContacts;
set SASHELP.contacts;
run;

Questo dataset è una copia speculare del dataset SASHELP.contacts all’interno del dataset myContacts.

Il dataset “contacts” si trova in un grande raccoglitore di dataset, ovvero una libreria,  che si chiama SASHELP.
Il dataset “myContacts” si trova in memoria, tale libreria si chiama Work ed è implicita.

Al termine della sessione SAS, tutto il contenuto della libreria Work viene eliminato.

Per stampare un dataset occorre eseguire una procedura di print, come segue:

proc print data=MYcontacts;
run;

Attenzione, SAS non è case sensitive, pertanto “MYcontacts” e “myContacts” sono due nomi che puntano alla stessa libreria.

Ogni istruzione termina con un “;”,  normalmente sia i Data step che le Proc terminano con l’istruzione “run”.

Fonti:

Dataset definition

Proc Print definition