INPUT STATEMENT

Nel comando di input viene specificato l'elenco delle variabii che desidero importare.

Di default Sas importa variabili numeriche mentre se voglimo importare variabili di tipo carattere dobbiamo far seguire la variabile con il simbolo $.  Esempio:

input altezza peso nome $;

I dati che si possono importare non sempre si presentano in formato "comodo". Se siamo fortunati sono delimitati da spazi e ad ogni riga corrisponde una osservazione, tuttavia a volte i dati si presentano in maniera disordinata; i delimitatori possono essere delle virgole ad esempio oppure su una riga esistono più osservaziioni. Inoltre i missing values molte volte non sono dei punti ma sono ad esempio seplicemente degli spazi bianchi o ancora volgiamo importare solo determinati dati ignorandone altri.

Vediamo allora di affrontare alcuni casi tipici di importazione con l'input statement.

INPUT NORMALE

E' il caso ricorrente in cui i dati sono delimitati da spazi. In questo caso basta scrivere il nome delle variabili distinguendo tra tipo numerico e carattere. Per specificare che è di tipo carattere, come detto, bisogna far seguire il nome della variabile dal simbolo $.

Di default Sas utilizza "il miglior modo " per importare variabili numeriche. Ciò significa che non dobbiamo specificare altro che il nome della variabile. Lo stesso vale per le variabili a carattere (di default 8 caratteri).

INPUT A FORMATO COLONNA (@)

A volte succede che i dati non siamo delimitati da spazi oppure che non vi siamo punti a rappresentare missing-value ma semplicemente degli spazi. L'importazione in questo caso avviene specificando in maniera esatta su quale numero di colonna del file da importare, Sas deve agire.E' possibile anche "saltare" all'interno della lettura.

Un esempio chiarirà il tutto:

input nome $ 1-10 eta 11-13 @25 altezza;

Sas in questo modo considera le prime 10 colonne del file come assegnate alla variabile nome; i dati della variabile età invece si trovano invece tra la colonna 11 e la colonna 13; infine salta alla colonna 25 e legge il resto come dati della variabile altezza.

Notiamo che in questo modo abbiamo ignorato l'eventuale contenuto tra la colonna 14 e la colonna 24.

IMPORTARE in FORMATO DESIDERATO

In alcuni casi è necessario specificare il formato esatto di importazione. Questo succede ad esempio quando importo una variabile carattere che è lunga + di 8 cifre oppure quando desideriamo importare delle variabili numeriche nel formato che noi vogliamo (ad esempio un numero intero lo voglio importare come decimale)

Vediamo un banale esempio che chiarisce il metodo di importazione in questi 2 casi:

input Nome $ :16. Age 3. punteggio 4.1;

In questo modo Sas importa la variabile nome a carattere lunga (al massimo) 16 caratteri, la variabile age numerica viene imporatata come numerica di 3 cifre e la variabile punteggio numerica che viene importata di quattro cifre (lunghezza totale) con un valore decimale (per esempio se il dato è 3213 esso viene importato come 321.3).

 

Sas di default utilizza per il salvataggio delle variabili numeriche e a carattere 8 byte. Tuttavia è possibile modificare il default con l'istruzione lenght sia nei casi in cui dovessimo importare dati che superano il default (esempio una variabile a carattere con + di 8 cifre), sia per una + attenta gestione della memoria e della capacità del disco disponibile.

IMPORTARE UNA OSSERVAZIONE DISPOSTA SU PIU' RIGHE (#, /) 

Può capitare a volte che le nostre osservazioni non siamo tutte su una riga del file da importare, ma si distribuiscono su più righe. Facciamo un banale esempio: le nostre osservazioni hanno 5 variabili di cui 2 sulla prima riga 2 sulla seconda riga e la  terza variabile sulla terza riga, come di seguito:

alberto 33
    impiegato 2
    italiana
...

Allora importeremo i dati nel seguente modo:

input nome $ eta / lavoro figli  #3 cittadinanza $;

Il comando / dice a sas di saltare alla riga successiva nel leggere i dati mentre il comando #3 dice a Sas di passare direttamente alla terza riga.

IMPORTARE PIU' OSSERVAZIONI SU UNA RIGA (@@)

In alcuni casi abbiamo più osservazioni distribuite sulla stessa riga come nel seguente esempio in cui abbiamo 2 osservazioni sulla stessa riga

carlo 33 impiegato 2 italiana elisa 25 dirigente 1 italiana....

In questo caso l'input statement sarà:

input nome $ eta lavoro $ figli cittadinanza $ @@;

La doppia @ dice a Sas che si è arrivati a fine osservazione.

ETICHETTE DELLE VARIABILI (label)

Molto spesso il nome con cui importiamo la variabile (che per comodità è corto) non coincide con il nome con cui vorremmo questa variabile apparisse nell'output. Ad esempio importiamo una variabile di tipo qualitativo come "fum" ma in realtà nell'output vorremmo apparisse "fumatore".
Questo si ottiene tramite l'istruzione label

data ...;
infile ...;
input ... fum $ ...;
label fum="fumatore"; /*assegno l'etichetta*/
run;