2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf ·...

23
7 2. I DATASET SAS 2.1 Introduzione Le più comuni fonti dei dati da analizzare con i metodi statistici sono - questionari provenienti da rilevazioni dirette - dati statistici raccolti da enti di varia natura - risultati di osservazioni sperimentali I dati da elaborare sono spesso di tipo eterogeneo, nel senso che possono coesistere variabili qualitative (sia sconnesse, sia ordinabili) e variabili quantitative (sia discrete, sia continue), anche se in alcune circostanze si può avere a che fare con variabili solo qualitative oppure solo quantitative. I dati da elaborare possono essere organizzati in modi diversi, ma i dataset SAS sono generalmente organizzati in una matrice di dimensioni n×h, dove le n righe rappresentano le unità statistiche considerate mentre le h colonne rappresentano le variabili oggetto di rilevazione. Un esempio di questo genere è contenuto nella tabella successiva, in cui i è l’etichetta che corrisponde alla i-esima unità statistica (con i = 1, 2, …, n), Xj rappresenta la j-esima variabile (con j = 1, 2, …, h) e xij è la determinazione assunta dalla j-esima variabile sull’i-esima unità statistica Tabella 2.1.1 Struttura di una matrice di dati Variabili Unità statistiche X1 X2 ... Xj ... Xh 1 x 11 x 12 ... x 1j ... x 1h 2 x 21 x 22 ... x 2j ... x 2h . ... ... ... ... ... ... i x i1 x i2 ... x ij ... x ih . ... ... ... ... ... ... n x n1 x n2 ... x nj ... x nh

Transcript of 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf ·...

Page 1: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

7

2. I DATASET SAS

2.1 Introduzione

Le più comuni fonti dei dati da analizzare con i metodi statistici sono

- questionari provenienti da rilevazioni dirette

- dati statistici raccolti da enti di varia natura

- risultati di osservazioni sperimentali

I dati da elaborare sono spesso di tipo eterogeneo, nel senso che possono coesistere variabili qualitative

(sia sconnesse, sia ordinabili) e variabili quantitative (sia discrete, sia continue), anche se in alcune

circostanze si può avere a che fare con variabili solo qualitative oppure solo quantitative.

I dati da elaborare possono essere organizzati in modi diversi, ma i dataset SAS sono generalmente

organizzati in una matrice di dimensioni n×h, dove le n righe rappresentano le unità statistiche

considerate mentre le h colonne rappresentano le variabili oggetto di rilevazione.

Un esempio di questo genere è contenuto nella tabella successiva, in cui i è l’etichetta che corrisponde

alla i-esima unità statistica (con i = 1, 2, …, n), Xj rappresenta la j-esima variabile (con j = 1, 2, …, h) e

xij è la determinazione assunta dalla j-esima variabile sull’i-esima unità statistica

Tabella 2.1.1

Struttura di una matrice di dati

Variabili

Unità statistiche

X1 X2 ... Xj ... Xh

1 x11 x12 ... x1j ... x1h

2 x21 x22 ... x2j ... x2h

. ... ... ... ... ... ...

i xi1 xi2 ... xij ... xih

. ... ... ... ... ... ...

n xn1 xn2 ... xnj ... xnh

Page 2: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

8

Va notato che a ogni unità statistica sono associate le medesime variabili e che tali variabili devono

comparire sempre nello stesso ordine.

In alcuni casi la determinazione assunta da una o più variabili su una determinata unità statistica non è

nota ed in questi casi si è in presenza di un’osservazione mancante (missing value).

In altre situazioni i dati da elaborare sono rappresentati sotto forma di tabelle di contingenza oppure di

matrici di covarianza o di correlazione. Il SAS è in grado di leggere anche dati organizzati in questi

modi, purché si descriva correttamente il formato dei dati utilizzando opportune istruzioni che verranno

descritte più avanti.

Page 3: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

9

2.2 la struttura dei dataset SAS

In ogni dataset SAS è necessario indicare:

1) il nome del dataset

2) il nome delle variabili

3) il formato delle variabili, distinguendo se “numerico” o “alfanumerico”

4) le determinazioni assunte dalle variabili su ciascuna unità statistica

I nomi assegnati ai dataset e alle variabili devono rispettare le seguenti regole:

- non possono superare i 32 caratteri

- non devono contenere caratteri speciali (come lettere accentate o simboli come &, %, £, $, …)

- il primo carattere deve essere sempre una lettera oppure la sottolineatura (underscore) “_”

- i caratteri successivi possono essere lettere, numeri o underscore

- non sono ammessi spazi bianchi

- non si possono utilizzare nomi speciali che vengono utilizzati dal sistema, come per esempio

_N_, ERROR_ LIBRARY, SASHELP, WORK, USER, MAPS e molti altri.

Il sistema SAS riconosce la creazione (o la lettura) di un dataset quando si digita la parola chiave

“data” seguita dal nome che si desidera assegnare al dataset, come mostrato dall’esempio successivo

in cui il nome assegnato al dataset è “studenti”.

Esempio 2.2.1

/*ESEMPIO DI CREAZIONE DI UN DATASET*/

data studenti;

/*”studenti” è il nome assegnato al dataset*/

Le variabili contenute in un dataset vengono elencate una dopo l’altra dopo la parola chiave “input” e

devono essere separate fra loro da almeno uno spazio bianco.

Ciascuna variabile è caratterizzata da una serie di attributi, di cui soltanto il nome è obbligatorio,

mentre gli altri sono opzionali:

- il nome (NAME, obbligatorio)

Page 4: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

10

- il tipo: numerico o alfanumerico (TYPE, opzionale, ma per default numerico)

- la lunghezza (LENGTH, opzionale)

- il formato di ingresso (INFORMAT, opzionale)

- il formato di uscita (FORMAT, opzionale)

- l’etichetta (LABEL, di lunghezza massima pari a 256 caratteri, opzionale)

Tutti questi attributi possono essere specificati mediante opportune istruzioni.

Per quanto riguarda il nome (NAME) da assegnare alle variabili, si seguono le stesse regole elencate a

proposito del nome da assegnare ai dataset.

Per quanto riguarda il tipo (TYPE) va notato che le determinazioni assunte da una variabile numerica

possono essere solo numeri, mentre quelle di una variabile alfanumerica possono essere numeri, lettere

e caratteri speciali. È importante tenere presente che il SAS utilizza il punto (e non la virgola) come

simbolo di separazione dei decimali.

Per default il SAS considera ogni variabile come numerica per cui, se si ha a che fare con variabili

alfanumeriche, occorre indicarlo in modo esplicito, aggiungendo il simbolo dollaro ($) dopo lo spazio

che segue il nome della variabile.

Se, per esempio, il dataset “studenti” contiene le informazioni relative al nome e cognome delle unità

statistiche, al loro numero di matricola e ai risultati ottenuti in due prove intermedie di un corso, le

istruzioni potrebbero essere quelle indicate nell’esempio seguente

Esempio 2.2.2

data studenti;

input cognome $ nome $ matricola prova1 prova2;

/*la keyword “input” è seguita dal nome e dal tipo delle variabili. Dato che “nome”

e “cognome” sono alfabetiche, il loro nome va seguito dal simbolo $. Le variabili

“matricola”, “prova1” e “prova2” sono invece numeriche*/

I restanti attributi delle variabili (tutti opzionali) verranno analizzati nei paragrafi seguenti, dopo aver

descritto le istruzioni necessarie per creare un dataset all’interno di un programma SAS.

Page 5: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

11

2.3 La creazione di un dataset SAS all’interno del programma

Si è detto nel paragrafo precedente che per dichiarare al SAS l’intenzione di creare un dataset si digita

nella finestra del PROGRAM EDITOR la parola chiave “data”, seguita dal nome che si desidera

assegnare al dataset che si sta creando e dal punto e virgola finale. Nella riga successiva va poi digitata

la parola chiave “input” che descrive la struttura del dataset, elencando ordinatamente le variabili ed

eventualmente fissando la loro posizione.

Questa istruzione assume forme diverse a seconda del tipo di formato del dataset che può essere:

1) in formato libero

2) in formato fisso (o formato colonna)

Nel primo caso le h variabili rilevate su ogni unità statistica vengono elencate ordinatamente una dopo

l’altra dopo la parola chiave “input”, senza che sia necessario indicare la loro posizione specifica, ma

è necessario ci sia almeno uno spazio bianco di separazione fa i diversi nomi.

Nei file a formato fisso, invece, le variabili hanno una posizione fissa, nel senso che devono essere

dichiarate le colonne che contengono le determinazioni di ciascuna variabile. Per ottenere questo

risultato occorre aggiungere, dopo il nome di ciascuna variabile, l’indicazione delle colonne che

contengono le determinazioni corrispondenti.

Una volta terminata l’elencazione delle variabili si utilizza il punto e virgola e l’imputazione delle

diverse determinazioni delle h variabili considerate va fatta in una nuova riga utilizzando la parola

chiave parola chiave “cards” oppure la parola chiave equivalente “datalines”, entrambe seguite dal

solito punto e virgola.

Queste due parole chiave indicano al SAS che nelle righe successive saranno inserite le determinazioni

assunte dalle h variabili elencate dopo la parola chiave “input” sulle n unità statistiche considerate:

ogni riga corrisponde a una singola unità statistica, per cui saranno presenti in tutto n righe.

Il SAS segnala di aver riconosciuto le determinazioni inserite da programma evidenziando

automaticamente in giallo tutto il testo posizionato sotto “cards” o sotto “datalines”.

In questo caso non va inserito il punto e virgola finale in nessuna delle n righe evidenziate in giallo. Un

punto e virgola isolato va invece inserito nella riga successiva all’ultima osservazione (che riporta

l’elenco delle determinazioni delle h variabili rilevate sulla n-esima unità statistica considerata).

Page 6: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

12

Per esempio, si consideri la tabella successiva che riporta i risultati ottenuti da un gruppo di 8 studenti

in due prove intermedie di un corso universitario.

Tabella 2.3.1

Esempio di matrice dei dati

Cognome Nome Matricola 1° prova 2° prova

Giovine Marta 101199 25 21

Rossi Fabio 112233 24 22

Conte Alessio 132378 26 26

Bianchi Rosa 123324 18 30

Valente Gianni 130001 21 24

Gallo Roberta 108875 18 23

Fiano Federico 122387 28 22

Germano Claudio 130024 26 23

Ciascuna colonna della tabella riporta una variabile: le prime due sono di tipo qualitativo (e quindi

alfanumeriche), mentre le tre successive sono invece quantitative (e quindi numeriche). Ogni riga della

tabella riporta le determinazioni delle singole variabili osservate sugli 8 studenti considerati.

Questa organizzazione dei dati è, a tutti gli effetti, un dataset SAS, in quanto è un insieme di dati

omogenei organizzati in forma rettangolare in cui le colonne indicano le variabili e le righe sono le

determinazioni assunte dalle variabili sulle unità statistiche considerate.

Un programma SAS che crea un dataset contenente i dati precedenti in un formato libero è riportato nel

riquadro seguente.

Esempio2.3.1

/*ESEMPIO DI CREAZIONE DI UN DATASET*/

data studenti; /*nome del dataset*/

input cognome $ nome $ matricola prova1 prova2; /*nome e tipo delle variabili*/

cards; /*”cards” o “datalines” sono le parole chiave che indicano l’inizio

dell’inserimento delle osservazioni*/

Giovine Marta 101199 25 21

Rossi Fabio 112233 24 22

Conte Alessio 132378 26 26

Bianchi Rosa 123324 18 30

Valente Gianni 130001 21 24

Gallo Roberta 108875 18 23

Fiano Federico 122387 28 22

Germano Claudio 130024 26 23

; /*il simbolo “;” indica il termine dell’inserimento delle osservazioni*/

proc print; /*procedura utilizzata per la visualizzazione del dataset*/

run;

Page 7: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

13

Il dataset è stato chiamato “studenti”, mentre le 5 variabili (di cui le prime due alfanumeriche e le

restanti numeriche) sono state chiamate: cognome, nome, matricola, prova1 e prova2.

Per una maggiore chiarezza, nel programma sono stati inseriti anche dei commenti, che il SAS ha

evidenziato automaticamente in colore verde, mentre ha colorato in blu tutte le parole chiave.

Nella prima riga la stringa “studenti” che segue la parola chiave “data” viene riconosciuta dal SAS

come il nome assegnato al dataset che si sta creando.

Nella riga successiva la parola chiave “input” indica al SAS l’elenco delle variabili ed è quindi seguita

dalla lista dei nomi delle variabili. Le due variabili “cognome” e “nome” sono seguite dal simbolo “$”

per indicare che si tratta di variabili alfanumeriche.

La parola chiave “cards”, seguita dal punto e virgola, indica al SAS che si stanno inserendo le

determinazioni assunte dalle variabili elencate sugli 8 studenti considerati.

In questo caso il dataset è in formato libero, per cui le determinazioni possono essere scritte una di

seguito all’altra, separandole con uno spazio bianco, e possono avere lunghezza diversa. Ciascuna riga

si riferisce a un singolo studente e manca il punto e virgola finale.

L’indicazione del termine di inserimento delle osservazioni è stata effettuata utilizzando una riga con il

solo punto e virgola.

Nella penultima riga del programma è stata utilizzata una procedura SAS, la “proc print”, per

controllare che non siano stati commessi errori nell’imputazione dei dati. Questa procedura si limita

infatti a visualizzare il contenuto del dataset creato nella finestra denominata “Visualizzatore dei

risultati”.

L’ultima riga del programma contiene la sola istruzione “run”, seguita dal solito punto e virgola.

Questa è la parola chiave che indica il termine delle istruzioni e deve essere sempre presente alla fine di

un qualsiasi programma SAS.

L’istruzione “run” conclude un qualsiasi programma SAS.

Il programma SAS appena esaminato consiste di due soli STEP: un DATA STEP che consente di

creare il dataset degli studenti e un PROC STEP (formato dalla sola proc print) che ne mostra il

contenuto nella finestra “Visualizzatore dei risultati”. Si ottiene così l’output mostrato nel riquadro

seguente

Page 8: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

14

Oss cognome nome matricola prova1 prova2

1 Giovine Marta 101199 25 21

2 Rossi Fabio 112233 24 22

3 Conte Alessio 132378 26 26

4 Bianchi Rosa 123324 18 30

5 Valente Gianni 130001 21 24

6 Gallo Roberta 108875 18 23

7 Fiano Federico 122387 28 22

8 Germano Claudio 130024 26 23

Va notato che durante la creazione (o anche durante la lettura) di un dataset, il SAS genera

automaticamente una variabile “_N_”, che contiene il numero di osservazioni create (o lette). Questa

variabile risulta particolarmente importante quando, per un qualche motivo, si desidera interrompere la

lettura di un file prima del suo termine reale.

Nell’esempio successivo si considera il caso in cui si crea lo stesso dataset dell’esempio 2.3.1, ma

questa volta utilizzando il formato fisso. In questo caso è necessario indicare al software la posizione

occupata dalle determinazioni di ciascuna variabile, esplicitando il numero delle colonne corrispondenti

dopo il simbolo “$” successivo al nome di ciascuna variabile alfanumerica e dopo il nome di ciascuna

variabile numerica. Il SAS evidenzia automaticamente in colore verde acqua il numero delle colonne.

Esempio 2.3.2 /*ESEMPIO DI CREAZIONE DI UN DATASET IN FORMATO FISSO*/

data studenti;

input cognome $ 1-7 nome $ 8-16 matricola 17-22 prova1 23-24 prova2 25-26;

cards;

GiovineMarta 1011992521

Rossi Fabio 1122332422

Conte Alessio 1323782626

BianchiRosa 1233241830

ValenteGianni 1300012124

Gallo Roberta 1088751823

Fiano Federico 1223872822

GermanoClaudio 1300242623

;

proc print;

run;

Page 9: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

15

Come si può notare, le istruzioni contenute nel programma dichiarano che le determinazioni assunte dal

cognome occupano i posti compresi da colonna 1 a colonna 7, quelle relative al nome vanno da colonna

8 a colonna 16, mentre la matricola occupa i posti da colonna 17 a 22 e così via.

Le determinazioni assunte dalle variabili in un dataset a formato fisso possono quindi essere separate

da uno o più spazi bianchi o possono essere scritte una di seguito all’altra, senza che il SAS abbia

problemi nel leggere il dataset, dato tali determinazioni occupano dei posti prefissati.

Il dataset che si ottiene è identico a quello creato in precedenza, come si vede dai risultati che

compaiono nella finestra “Visualizzatore dei risultati”, una volta che il programma sia stato lanciato.

Il SAS è in grado di riconoscere anche dataset in formato misto, ossia in formato in parte fisso e in

parte variabile, come risulta dall’esempio successivo, in cui si è mantenuto il formato fisso per il nome

e il cognome, mentre le variabili numeriche sono in formato variabile.

Esempio 2.3.3 /*ESEMPIO DI CREAZIONE DI UN DATASET IN FORMATO MISTO*/

data studenti;

input cognome $ 1-7 nome $ 8-16 matricola prova1 prova2;

label cognome = 'cognome dello studente'

nome = 'nome dello studente'

matricola = 'matricola dello studente'

prova1 = 'punteggio ottenuto nella prima prova'

prova2 = 'punteggio ottenuto nella seconda prova'; /*etichette delle

variabili, opzionali*/

cards;

GiovineMarta 101199 25 21

Rossi Fabio 112233 24 22

Conte Alessio 132378 26 26

BianchiRosa 123324 18 30

ValenteGianni 130001 21 24

Gallo Roberta 108875 18 23

Fiano Federico 122387 28 22

GermanoClaudio 130024 26 23

;

proc print;

run;

In questo programma si è inserita anche la parola chiave “label” che assegna un’etichetta a ciascuna

delle variabili considerate. Questa etichetta apparirà nelle diverse elaborazioni che compariranno nella

finestra “visualizzatore dei risultati” accanto al nome originale. Questa istruzione (opzionale) può

essere utilizzata sia all’interno di un DATA STEP sia all’interno di un PROC STEP.

Page 10: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

16

Se si utilizza un’etichetta contenente un apostrofo al suo interno è necessario usare due apostrofi

consecutivi. Il SAS segnala di aver riconosciuto le etichette evidenziandole automaticamente in viola,

come visualizzato nel riquadro precedente.

Un modo alternativo per indicare la posizione occupata dalle determinazioni assunte dalle diverse

variabili all’interno di un dataset consiste nell’incrementare numericamente il valore del puntatore. In

questo caso occorre indicare al SAS la lunghezza di ciascuna variabile e il numero degli eventuali spazi

bianchi presenti fra le diverse determinazioni.

Il numero di spazi bianchi va indicato digitando il simbolo “+” seguito dal numero in questione.

La lunghezza della variabile viene invece indicata in modo diverso a seconda della natura della

variabile stessa:

- se la variabile è alfanumerica, la lunghezza va indicata subito dopo il simbolo “$”, senza

lasciare alcuno spazio bianco, e va seguita dal punto

- se la variabile è numerica, la lunghezza va indicata dopo il nome della variabile, lasciando

almeno uno spazio bianco, e va seguita dal punto

Il SAS evidenzierà la lunghezza della variabile e l’eventuale numero di spazi bianchi in colore verde

acqua.

Per esempio, nell’esempio 2.3.3, la riga di istruzioni

input cognome $ 1-7 nome $ 8-16 matricola prova1 prova2;

può essere sostituita da

input cognome $7. nome $8. +1 matricola 6. +1 prova1 2. +1 prova2 2.;

in cui si indica al SAS che

- la prima variabile, cognome, è alfanumerica e lunga 7 caratteri,

- la seconda variabile, nome, è alfanumerica e lunga 8 caratteri,

- segue uno spazio bianco (+1),

- la variabile matricola è numerica e lunga 6 caratteri

- segue uno spazio bianco (+1),

- la variabile risultato della prima prova è numerica e lunga 2 caratteri,

Page 11: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

17

- segue uno spazio bianco (+1),

- la variabile risultato della seconda prova è numerica e lunga 2 caratteri.

Alternativamente, il simbolo @i indica al puntatore di spostarsi alla colonna i, per cui la riga

input cognome $7. nome $8. +1 matricola 6. +1 prova1 2. +1 prova2 2.;

può essere sostituita dalle istruzioni equivalenti

input cognome $7. nome $8. @17 matricola 6. @24 prova1 2. @27 prova2 2.;

in cui, prima del nome della variabile, invece di inserire il numero di spazi bianchi, si indica la colonna

in cui va spostato il puntatore.

Quale che sia il formato scelto, va notato che tutte le osservazioni (ossia tutte le righe evidenziate in

giallo) devono presentare le stesse variabili. Le determinazioni delle variabili non osservate sono

registrate come dato mancante (missing value).

Quando nel dataset è presente un numero elevato di variabili numeriche è possibile elencarle in modo

abbreviato scrivendole sotto forma vettoriale. In questo caso, affinché il SAS possa riconoscere che si

tratta di un vettore di variabili, è necessario che:

- tutte le variabili abbiano lo stesso nome,

- l’ultimo carattere dell’identificativo della prima variabile sia il numero 1

- l’ultimo carattere dell’identificativo dell’ultima variabile corrisponda al numero di variabili

considerate.

Se, per esempio, si considerano 5 variabili numeriche, le stesse possono essere identificate con una

qualsiasi delle seguenti istruzioni

input var1 var2 var3 var4 var5;

input var1-var5;

input X1-X5;

Page 12: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

18

Pur non essendo una regola, il consiglio generale per assegnare un nome alle variabili è quello di farlo

in modo tale che dal nome si possa facilmente risalire al contenuto della variabile (nome mnemonico).

Per quanto riguarda gli ultimi due attributi delle variabili, ossia il formato di ingresso (INFORMAT) e

quello di uscita (FORMAT), le istruzioni variano a seconda della natura della variabile.

Nel caso di variabili numeriche queste due istruzioni consentono di specificare il numero complessivo

di cifre (in cui viene conteggiato l’eventuale punto decimale e gli eventuali decimali) sia in ingresso

(mediante la parola chiave “informat”) sia in uscita (mediante la parola chiave “format”). La stringa

di istruzioni assume la forma seguente

format nome_variabile commax.y

informat nome_variabile commax.y

dove l’istruzione “comma” (evidenziata automaticamente in colore verde acqua dal SAS) è seguita dal

numero complessivo delle cifre “x” che comprende l’eventuale punto decimale “.” e il numero “y” di

cifre decimali, dove il numero di decimali sarà esattamente pari a y se il numero x è sufficientemente

grande, mentre sarà inferiore a y in caso contrario.

Nell’esempio successivo alle 3 variabili X1, X2 e X3 viene associato sempre lo stesso valore (posto

pari a 1234.5678), ma la variabile X1 verrà stampata a terminale con 9 cifre complessive (di cui 4

interi, il punto decimale e 4 decimali), la variabile X2 con 7 cifre (4 intere, il punto decimale, 2

decimali) e X3 con 4 cifre intere.

data variabili_numeriche;

input X1 X2 X3;

cards;

1234.5678 1234.5678 1234.5678

;

proc print;

format X1 comma9.4 X2 comma7.2 X3 comma5. ;

run;

Con questi formati, infatti, si otterranno i seguenti valori di output

Page 13: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

19

Oss X1 X2 X3

1 1234.5678 1234.57 1235

Va notato che, quando si usa un formato di lunghezza inferiore al formato di partenza, il SAS arrotonda

automaticamente il valore (come accade, in questo esempio, per la seconda e la terza variabile).

Nel caso di variabili alfanumeriche il SAS, per default, le considera lunghe al massimo 8 caratteri, ma

si può indicare una lunghezza inferiore facendo seguire il simbolo $ dal numero di cifre e dal punto,

come nell’esempio seguente

data variabili_alfanum;

input var1 $ var2 $;

cards;

ABC abc

DEFG defg

HIJKLMN hijklmn

OP op

;

proc print;

format var1 $2. var2 $6.;

run;

In questo caso la stampa del dataset fornisce l’output riportato nel riquadro successivo, in cui la

variabile “var1” è lunga solo due caratteri, mentre “var2” arriva fino a 6 caratteri (se le determinazioni

originali sono lunghe a sufficienza).

Oss var1 var2

1 AB abc

2 DE defg

3 HI hijklm

4 OP op

Per indicare al SAS che una variabile alfanumerica è lunga più di 8 caratteri è necessario indicare

esplicitamente le colonne che contengono le sue determinazioni, così come descritto nelle pagine

precedenti.

Page 14: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

20

2.4 La gestione delle date di calendario

Quando una variabile corrisponde a una data occorre indicarlo in modo esplicito al sistema utilizzando

uno dei possibili formati che il SAS identifica come data. Se si inserisce una data in un dataset creato

da programma, bisogna innanzitutto dichiarare il formato della variabile (in genere giorno-mese-anno)

e il numero di caratteri corrispondenti.

Il SAS trasforma automaticamente in numeri (sia positivi, sia negativi) qualsiasi data. Per convenzione

il valore zero corrisponde al 1° gennaio del 1960.

Per esempio, il programma riportato nel riquadro seguente

Esempio 2.4.1 data dataformat;

input data1 ddmmyy10. +1 data2 ddmmyy10. +1 data3 ddmmyy8.;

cards;

02-03-1899 02/03/1899 02031899

01-01-1960 01/01/1960 01011960

30-01-2017 30/01/2017 30012017

;

proc print;

run;

utilizza 3 diversi formati di data:

- la variabile “data1” è una data formata da 10 caratteri in cui i primi 2 identificano il giorno (dd),

poi c’è un carattere speciale (il trattino), i due caratteri successivi identificano il mese (mm) , poi

c’è ancora il trattino e gli ultimi 4 sono gli anni (yy) e quindi è nel formato gg-mm-aaaa;

- la variabile “data2” è analoga alla precedente, con l’unica differenza riguardante il carattere

speciale che separa giorno, mese e anno (e quindi è nel formato gg/mm/aaaa):

- la variabile “data3” è costituita da 8 valori numerici in cui i primi due indicano il giorno, il terzo

e il quarto il mese e gli ultimi 4 l’anno (e quindi è nel formato ggmmaaaa)

L’output del SAS assume la forma riportata nel riquadro seguente

Oss data1 data2 data3

1 -22219 -22219 -22219

2 0 0 0

3 20849 20849 20849

Page 15: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

21

in cui, come si vede, le date sono state convertite in valori numerici dal SAS.

Se si desidera ottenere le date in un certo formato, anziché nel formato numerico utilizzato dal SAS,

occorre specificarlo utilizzando l’istruzione “format”, così come è stato fatto nella proc print del

programma riportato nel riquadro successivo in cui si stampano a terminale le date dell’esempio

precedente. In questo caso sono stati selezionati tre diversi formati di date, ma nei manuali SAS sono

riportati molti altri formati differenti da questi.

proc print;

format data1 date7. data2 monyy. data3 ddmmyy.;

Con queste istruzioni si ottiene il seguente output

Oss data1 data2 data3

1 02MAR99 MAR99 02/03/99

2 01JAN60 JAN60 01/01/60

3 30JAN17 JAN17 30/01/17

in cui:

- la prima variabile (data1) è costituita da due cifre (che indicano il giorno), da 3 lettere (che

indicano le inziali del mese in inglese) e infine le ultime due cifre (che indicano l’anno);

- la seconda data (data2) è costituita da 3 lettere (che corrispondono alle iniziali del mese) e da

due cifre (che indicano le ultime due cifre dell’anno)

- la terza data (data3) è costituita da tre blocchi di due cifre, separati fra loro dal simbolo “/”, che

indicano rispettivamente il giorno, il mese e l’anno, tutti espressi mediante numeri.

In tutti gli esempi precedenti i dati da elaborare sono stati inseriti da programma ma, come vedremo nei

paragrafi seguenti, possono essere anche letti da archivi esterni (il cui formato può essere di vario tipo:

SAS, Excel, Access, SPSS, …). Se il file è in formato ASCII o SAS la lettura avviene molto

semplicemente, attraverso un’opportuna istruzione inserita in un DATA STEP, mentre nei restanti casi

è necessario un PROC STEP, ossia l’utilizzo di un’apposita procedura.

Page 16: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

22

2.5 Le librerie

Per libreria di dati si intende una raccolta di uno o più dataset. I dataset creati da un programma SAS

sono di due tipi: temporanei e permanenti.

- I dataset temporanei, cancellati al termine della sessione di lavoro, si trovano per default in una

libreria denominata “WORK” che viene creata automaticamente dal SAS. Tale libreria viene

svuotata a ogni chiusura della sessione di lavoro.

- I dataset permanenti vengono invece archiviati in una libreria creata dall’utente e sono

disponibili fino a quando non siano cancellati manualmente. Per poter archiviare in modo

permanente un dataset occorre innanzitutto creare la libreria di riferimento (per esempio può

trattarsi di una cartella creata sul desktop, su una partizione del disco fisso o su un supporto

esterno). Va notato che anche per i nomi delle librerie valgono le medesime regole che sono

state ricordate in precedenza. a proposito dei nomi delle variabili e dei dataset.

Si è detto che l’ambiente di lavoro predefinito dal SAS è una libreria temporanea di default la cui

denominazione è “WORK”. Tutto quello che viene memorizzato in questa libreria viene cancellato al

termine di ogni sessione di lavoro.

Se si desidera che i dataset creati nel corso del lavoro non vengano cancellati è necessario utilizzare

una libreria diversa da quella di default.

Il nome di un dataset SAS è sempre costituito da due stringhe di caratteri, separate da un punto, in cui

la prima stringa indica la libreria e la seconda il nome del dataset. Se la prima stringa viene omessa, il

SAS le attribuisce per default il nome “work” e il dataset risulterà temporaneo.

Negli esempi 2.3.1, 2.3.2 e 2.3.3 il dataset studenti è quindi in realtà identificato da “work.studenti”,

dove la stringa “work” viene attribuita automaticamente dal SAS.

Se, invece, si è creato un dataset denominato “risultati_test” mediante la riga di istruzioni

data risultati_test;

il nome effettivo completo del dataset sarà “work.risultati_test”.

Page 17: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

23

Si è detto che la libreria WORK, usata per registrarvi dataset temporanei, viene eliminata al termine

della sessione insieme con tutti i suoi archivi e a questa eliminazione pensa automaticamente il sistema.

Questa convenzione risulta comoda almeno per due motivi:

a) il disco su cui si registrano gli archivi non verrà ingombrato inutilmente da dati che non si

desidera registrare in modo permanente (perché magari frutto di risultati intermedi o di prove);

b) non si rischia di lasciare registrazioni su disco, se queste non sono state volutamente rese

permanenti (ad esempio perché riservate).

In definitiva, la scelta circa la cancellazione o meno del dataset viene effettuata determinando la libreria

associata al dataset stesso.

Per utilizzare una libreria diversa da “WORK” esistono due possibilità:

- si può scrivere un’istruzione all’interno del programma SAS utilizzando la parola chiave

libname seguita dal nome della libreria e dalla localizzazione completa del dataset, ossia del

percorso necessario per trovarlo (tale percorso va inserito fra apici).

- si può selezionare l’icona Nuova Libreria dalla barra degli strumenti e completare la finestra

con il nome logico della libreria e la localizzazione completa del dataset.

Nelle pagine successive si farà esplicito riferimento solo al primo metodo.

Si osservi che il comando libname può essere usato in qualsiasi punto di un programma SAS e che

rimane in esecuzione fino alla fine della sessione di lavoro.

È possibile utilizzare librerie diverse in un’unica sessione di lavoro, in modo da salvare i dataset in

cartelle differenti.

Per memorizzare un dataset SAS, ossia per inserire il file in una libreria prescelta, è necessario digitare

due stringhe di caratteri separate da un punto: la prima stringa corrisponde al nome associato alla

libreria e la seconda stringa è il nome del dataset. In tutti gli altri casi il file verrà memorizzato

automaticamente nella libreria “WORK” e sarà quindi eliminato alla chiusura della sessione.

Per esempio, se alla libreria si volesse attribuire il nome “libr1” e si volessero salvare i dati all’interno

della directory “c:\dataset”, ossia all’interno della cartella “dataset” presente sul dico C, le istruzioni

assumerebbero la forma

Page 18: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

24

libname libr1 'c:\dataset';

Come si vede, il percorso della libreria deve essere scritto fra apici e viene evidenziato

automaticamente in colore viola dal SAS.

Un qualsiasi dataset da memorizzare in tale libreria avrà la prima stringa del nome identificata da libr1

e sarà memorizzato in modo permanente nella libreria “c:\dataset”.

Nell’esempio successivo si crea lo stesso dataset utilizzato negli esempi 2.3.1, 2.3.2 e 2.3.3, ma questa

volta il dataset rimarrà sul computer anche al termine della sessione di lavoro SAS.

Esempio 2.5.1 libname libr1 'c:\dataset'; /*memorizzazione degli archivi nella libreria

c:\dataset - creazione di un dataset permanente*/

data libr1.studenti;

input cognome $ nome $ matricola prova1 prova2;

cards;

Giovine Marta 101199 25 21

Rossi Fabio 112233 24 22

Conte Alessio 132378 26 26

Bianchi Rosa 123324 18 30

Valente Gianni 130001 21 24

Gallo Roberta 108875 18 23

Fiano Federico 122387 28 22

Germano Claudio 130024 26 23

;

proc print;

run;

Page 19: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

25

Esercizi riepilogativi

Esercizio 2.1

Costruire il dataset “libri” in formato libero contenente le variabili “anno”, “opere”, “libri_ab” sulla

base delle informazioni riportate nella tabella successiva.

Opere librarie pubblicate in Italia dall’anno 2000 al 2014 (fonte ISTAT)

Anno Opere librarie Opere per 10.000 abitanti

2000 55.546 9,8

2001 53.131 9,3

2002 54.624 9,6

2003 54.266 9,4

2004 52.760 9,1

2005 59.743 10,2

2006 61.440 10,4

2007 59.129 10,0

2008 58.829 9,8

2009 57.558 9,6

2010 63.800 10,5

2011 59.237 9,9

2012 59.230 9,9

2013 61.966 10,3

2014 57.820 9,5

Soluzione

data libri;

input anno opere libri_ab;

cards;

2000 55546 9.8

2001 53131 9.3

2002 54624 9.6

2003 54266 9.4

2004 52760 9.1

2005 59743 10.2

2006 61440 10.4

2007 59129 10.0

2008 58829 9.8

2009 57558 9.6

2010 63800 10.5

2011 59237 9.9

2012 59230 9.9

2013 61966 10.3

2014 57820 9.5

;

proc print;

run;

Page 20: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

26

Esercizio 2.2

Costruire il dataset “Ist_arte” in formato fisso contenente le variabili “anno” (da colonna 1 a colonna

4), “visit_p” (da colonna 6 a colonna 11) e “visit_np” (da colonna 15 a colonna 20) sulla base delle

informazioni riportate nella tabella successiva.

Istituti di antichità e d'arte statali, visitatori paganti e non paganti

(dati in migliaia, fonte ISTAT)

Anno Visitatori paganti Visitatori non paganti

2000 15.488 14.688

2001 15.730 13.813

2002 15.046 15.223

2003 14.433 16.018

2004 15.161 17.066

2005 15.530 17.518

2006 16.465 18.110

2007 16.247 18.196

2008 15.603 17.504

2009 14.604 17.776

2010 15.516 21.821

2011 17.230 23.993

2012 16.801 20.398

2013 17.650 20.775

2014 19.070 21.675

Soluzione

data Ist_arte;

input anno 1-4 visit_p 6-11 visit_np 15-20;

cards;

2000 15488 14688

2001 15730 13813

2002 15046 15223

2003 14433 16018

2004 15161 17066

2005 15530 17518

2006 16465 18110

2007 16247 18196

2008 15603 17504

2009 14604 17776

2010 15516 21821

2011 17230 23993

2012 16801 20398

2013 17650 20775

2014 19070 21675

;

proc print;

run;

Page 21: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

27

Esercizio 2.3

Creare l’archivio permanente “direct1.tasso_neet” in cui la libreria direct1 indica la directory

“c:\es_MRS” sulla base dei dati riportati nella tabella seguente che contiene le variabili “Regione” e

“NEET” (percentuale di giovani non occupati né inseriti in un percorso regolare di

istruzione/formazione)

Tasso NEET regionale (anno 2017, fonte ISTAT)

Regione NEET

Piemonte 20,0

Valle d'Aosta 15,7

Lombardia 15,9

Trentino Alto Adige 14,3

Veneto 15,2

Friuli Venezia Giulia 16,9

Liguria 20,9

Emilia Romagna 16,1

Toscana 16,7

Umbria 19,5

Marche 19,0

Lazio 21,7

Abruzzo 22,0

Molise 26,1

Campania 36,0

Puglia 33,3

Basilicata 29,2

Calabria 36,7

Sicilia 37,6

Sardegna 29,1

Page 22: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

28

Soluzione

libname direct1 'c:\es_MRS';

data direct1.tasso_neet;

input regione $ 1-22 neet;

cards;

Piemonte 20.0

Valle d'Aosta 15.7

Lombardia 15.9

Trentino Alto Adige 14.3

Veneto 15.2

Friuli Venezia Giulia 16.9

Liguria 20.9

Emilia Romagna 16.1

Toscana 16.7

Umbria 19.5

Marche 19.0

Lazio 21.7

Abruzzo 22.0

Molise 26.1

Campania 36.0

Puglia 33.3

Basilicata 29.2

Calabria 36.7

Sicilia 37.6

Sardegna 29.1

;

proc print;

run;

Page 23: 2. I DATASET SAS 2.1 Introduzionedocenti-deps.unisi.it/.../11/Introduzione-al-SAS-cap2.pdf · 2018-11-16 · 11 2.3 La creazione di un dataset SAS all’interno del programma Si è

29

Esercizio 2.4

Considerata la seguente tabella relativa a 5 unità statistiche su cui sono state rilevate 3 variabili

numeriche

identificativo var1 var2 var3

A 1 13 -4.2

B 6 25 -5.1

C 4 18 -2.7

D 2 27 0.5

E 2 17 -3.5

creare un dataset temporaneo (denominato archivio_1) contenente la variabile alfabetica “id” e le tre

variabili numeriche X1, X2 e X3, in cui le prime due sono costituite da due cifre intere, mentre la terza

è costituita da due cifre intere e due decimali.

data archivio_1;

input id $ X1 X2 X3;

format X1 comma2. X2 comma2. X3 comma6.2;

cards;

A 1 13 -4.2

B 6 25 -5,1

C 4 18 -2.7

D 2 27 0.5

E 2 17 -3.5

;

proc print;

run;