• Non ci sono risultati.

F7. L' ISTRUZIONE INPUT

Nel documento NOTE INTRODUTTIVE AL SISTEMA SAS (pagine 40-44)

L'istruzione INPUT si leggono dati grezzi (non Data Set SAS) su file, residenti su disco, ecc. Non ci sono limiti al numero di istruzioni INPUT che possono comparire in un passo di Data. Ciascuna istruzione INPUT legge:

- da un file indirizzato da una istruzione INFILE che deve precedere la istruzione INPUT

- da programma se non compare alcuna istruzione INFILE. In tal caso per segnalare al SAS l'inizio dei dati, deve comparire una istruzione DATALINES (o CARDS) come ultima istruzione del passo di Data ed immediatamente prima dell'inizio dei dati.

In SAS sono possibili vari tipi di input, di cui i principali sono: 1) a colonne

2) a lista 3) a formato

E' possibile nella stessa istruzione combinare i tre tipi di input.

INPUT A COLONNE:

La sintassi della istruzione e':

INPUT var_1 [$] col_partenza_1 [ - col_fine_1 ] [ . decimali_1 ] .... [ var_n [$] col_partenza_n [ - col_fine_N ] [ . decimali_n ] ]; Valgono le seguenti regole di scrittura:

- il $ è usato per indicare una variabile carattere

- i campi contenenti i dati possono essere letti in qualsiasi ordine - campi o parti di campi possono essere riletti

Esempio: INPUT NOME $ 1-8 INIZIALE $ 1 ;

- le variabili carattere possono essere al massimo lunghe 200 caratteri (da precisare con l'istruzione LENGHT) e possono avere spazi come caratteri propri del campo (ad es. DE LUCA).

Alcune considerazioni sull'INPUT a colonna:

- i valori mancanti vanno codificati con un punto (all'interno del campo) o con degli spazi; - i valori carattere, prima di essere assegnati alle variabili, sono allineati a sinistra.

Ad esempio, avendo l'istruzione INPUT SESSO $ 1-3 allora: M (il valore della variabile compare in prima colonna) M (il valore della variabile compare in seconda colonna) M (il valore della variabile compare in terza colonna) sono letti allo stesso modo.

- i valori numerici possono comparire ovunque nel campo; possono essere specificati il segno, le cifre decimali o l'esponente.

Esempio:

con l'istruzione INPUT X 1-6;

si può leggere uno dei seguenti numeri 23

(il segno € indica uno spazio bianco) 23.0 2.3E1 23 -23

- in un campo numerico non sono permessi spazi bianchi (esempio: - 23 )

Esempio di input a colonna:

INPUT A LISTA:

La sintassi della istruzione è la seguente:

INPUT variabile_1 [$] [&]...[ [variabile_n [$] [&] ] ; Valgono le seguenti regole di scrittura:

- il $ è usato per indicare una variabile carattere;

- ogni campo deve essere specificato in ordine di registrazione dei dati d'ingresso;

- i campi devono essere separati da uno o più spazi o da altro carattere specificato con l’ozione DELIMITER= dell’istruzione INFILE (vedi approfondimenti successivi);

- le variabili carattere possono essere al massimo lunghe 8 caratteri (a meno che non usi l'istruzione LENGHT);

- se vi sono spazi bianchi come caratteri propri del campo (ad es. DE LUCA) deve essere messo nella dichiarazione il simbolo &. In tal caso il campo successivo deve essere separato da almeno due spazi.

Considerazioni sull'input a lista:

- il SAS ricerca nella riga il primo carattere diverso da blank e da quel punto in poi, fino al successivo blank (o successivi due, se compare il simbolo &), il campo letto rappresenta il valore della variabile; - le variabili da leggere debbono comparire nella istruzione INPUT nello stesso ordine in cui appaiono

nei dati;

- i valori mancanti vanno tutti codificati con un punto;

- l'istruzione INPUT termina quando è stato assegnato un valore a tutte le variabili. Se i dati presenti in una riga non sono sufficienti, verrà letto il record successivo.

ESEMPI

FILE DI INPUT:

Country Car MPG Weight Drive Horse Displa Cyl. Accel. Ratio power cement

U.S. Buick Estate Wagon 16.9 4.360 2.73 155 350 8 14.9 U.S. Ford Country Squire Wagon 15.5 4.054 2.26 142 351 8 14.3 U.S. Chevy Malibu Wagon 19.2 3.605 2.56 125 267 8 15.0 U.S. Chrysler LeBaron Wagon 18.5 3.940 2.45 150 360 8 13.0 U.S. Chevette 30.0 2.155 3.70 68 98 4 16.5

Japan Toyota Corona 27.5 2.560 3.05 95 134 4 14.2 Japan Datsun 510 27.2 2.300 3.54 97 119 4 14.7 U.S. Dodge Omni 30.9 2.230 3.37 75 105 4 14.5 Germany Audi 5000 20.3 2.830 3.90 103 131 5 15.9 Sweden Volvo 240 GL 17.0 3.140 3.50 125 163 6 13.6 Sweden Saab 99 GLE 21.6 2.795 3.77 115 121 4 15.7 France Peugeot 694 SL 16.2 3.410 3.58 133 163 6 15.8

U.S. Buick Century Special 20.6 3.380 2.73 105 231 6 15.8 U.S. Mercury Zephyr 20.8 3.070 3.08 85 200 6 16.7

U.S. Dodge Aspen 18.6 3.620 2.71 110 225 6 18.7 U.S. AMC Concord D/L 18.1 3.410 2.73 120 258 6 15.1

U.S. Chevy Caprice Classic 17.0 3.840 2.41 130 305 8 15.4 U.S. Ford LTD 17.6 3.725 2.26 129 302 8 13.4

U.S. Mercury Grand Marquis 16.5 3.955 2.26 138 351 8 13.2 U.S. Dodge St Regis 18.2 3.830 2.45 135 318 8 15.2

U.S. Ford Mustang 4 26.5 2.585 3.08 88 140 4 14.4

U.S. Ford Mustang Ghia 21.9 2.910 3.08 109 171 6 16.6 Japan Mazda GLC 34.1 1.975 3.73 65 86 4 15.2

Japan Dodge Colt 35.1 1.915 2.97 80 98 4 14.4 U.S. AMC Spirit 27.4 2.670 3.08 80 121 4 15.0 Germany VW Scirocco 31.5 1.990 3.78 71 89 4 14.9 Japan Honda Accord LX 29.5 2.135 3.05 68 98 4 16.6 U.S. Buick Skylark 28.4 2.670 2.53 90 151 4 16.0 U.S. Chevy Citation 28.8 2.595 2.69 115 173 6 11.3 U.S. Olds Omega 26.8 2.700 2.84 115 173 6 12.9 U.S. Pontiac Phoenix 33.5 2.556 2.69 90 151 4 13.2

U.S. Plymouth Horizon 34.2 2.200 3.37 70 105 4 13.2 Japan Datsun 210 31.8 2.020 3.70 65 85 4 19.2

Italy Fiat Strada 37.3 2.130 3.10 69 91 4 14.7 Germany VW Dasher 30.5 2.190 3.70 78 97 4 14.1 Japan Datsun 810 22.0 2.815 3.70 97 146 6 14.5 Germany BMW 320i 21.5 2.600 3.64 110 121 4 12.8 Germany VW Rabbit 31.9 1.925 3.78 71 89 4 14.0

PROGRAMMA SAS n. 23:

option pagesize=60 nodate; libname corso 'a:\corsosas'; data corso.CARS;

infile 'a:\acp.txt' firstobs=3; length TIPO $ 25;

input NAZIONE $ TIPO $ & CONSUMO PESO DRIVE_R POTENZA CILINDRA NUM_C RIPRESA;

proc print round;

var tipo NAZIONE CONSUMO PESO DRIVE_R POTENZA CILINDRA NUM_C RIPRESA; run;

OUTPUT SAS (parziale):

OBS TIPO NAZIONE CONSUMO PESO DR_R POTEN CILIN NUM_C RIPRESA 1 Buick Estate Wagon U.S. 16.9 4.36 2.73 155 350 8 14.9 2 Ford Country Squire Wagon U.S. 15.5 4.05 2.26 142 351 8 14.3 3 Chevy Malibu Wagon U.S. 19.2 3.61 2.56 125 267 8 15.0 4 Chrysler LeBaron Wagon U.S. 18.5 3.94 2.45 150 360 8 13.0 5 Chevette U.S. 30.0 2.16 3.70 68 98 4 16.5 6 Toyota Corona Japan 27.5 2.56 3.05 95 134 4 14.2 7 Datsun 510 Japan 27.2 2.30 3.54 97 119 4 14.7 8 Dodge Omni U.S. 30.9 2.23 3.37 75 105 4 14.5 9 Audi 5000 Germany 20.3 2.83 3.90 103 131 5 15.9 10 Volvo 240 GL Sweden 17.0 3.14 3.50 125 163 6 13.6 11 Saab 99 GLE Sweden 21.6 2.80 3.77 115 121 4 15.7 12 Peugeot 694 SL France 16.2 3.41 3.58 133 163 6 15.8 13 Buick Century Special U.S. 20.6 3.38 2.73 105 231 6 15.8 14 Mercury Zephyr U.S. 20.8 3.07 3.08 85 200 6 16.7 15 Dodge Aspen U.S. 18.6 3.62 2.71 110 225 6 18.7 16 AMC Concord D/L U.S. 18.1 3.41 2.73 120 258 6 15.1 17 Chevy Caprice Classic U.S. 17.0 3.84 2.41 130 305 8 15.4 18 Ford LTD U.S. 17.6 3.73 2.26 129 302 8 13.4 19 Mercury Grand Marquis U.S. 16.5 3.96 2.26 138 351 8 13.2 20 Dodge St Regis U.S. 18.2 3.83 2.45 135 318 8 15.2

INPUT A FORMATO:

La sintassi dell'istruzione è la seguente:

INPUT puntatore_1 variabile_1 formato_1 ... [puntatore_n variabile_n formato_n ] ; dove:

- puntatore può essere uno dei seguenti:

+n il cursore si sposta di n colonne

/ il cursore va alla prima colonna del record successivo # n il cursore si posiziona alla prima colonna del record n @ n il cursore si posiziona alla colonna n

@ 'carattere ' il cursore si posiziona alla prima colonna diversa da blank dopo il carattere indicato @@ indica che i dati di un record si riferiscono a più osservazioni

- variabile è il nome valido di una o più variabili SAS

- formato può essere uno dei seguenti (sono elencati i più comuni): w. formato per leggere un campo numerico lungo w cifre;

w.d formato per leggere un campo numerico lungo w cifre di cui d decimali; $w. formato per leggere un campo alfanumerico lungo w caratteri;

$CHARw. formato per leggere un campo alfanumerico lungo w caratteri contenente blank; Ew. formato esadecimale.

Con l'input a formato i valori mancanti vanno codificati con un punto o con degli spazi. Si possono considerare variabili numeriche con 0 al posto di blank.

Si possono leggere anche "date" (in notazione inglese, italiana,...).

Esempio

PROGRAMMA SAS n. 24:

data es1;

input sesso $ eta :3.1 hinch wlib @@; altezza=hinch*2.54; peso=wlib*0.4536; datalines; f 143 56.3 85.0 f 155 62.3 105.0 f 153 63.3 108.0 f 161 59.0 92.0 f 191 62.5 112.5 f 171 62.5 112.0 f 185 59.0 104.0 f 142 56.5 69.0 f 160 62.0 94.5 f 140 53.8 68.5 f 139 61.5 104.0 f 178 61.5 103.5 f 157 64.5 123.5 f 149 58.3 93.0 f 143 51.3 50.5 f 145 58.8 89.0 f 191 65.3 107.0 f 150 59.5 78.5 f 147 61.3 115.0 f 180 63.3 114.0 f 141 61.8 85.0 f 140 53.5 81.0 f 164 58.0 83.5 f 176 61.3 112.0 ; run; Esempio:

INPUT NOME $ 8. @11 SESSO $ 1. +1 ETA 2. +1 ALTEZZA 3. +1 PESO 5.1;

E' possibile raggruppare i dati che vanno letti con il medesimo formato e raggruppare il formato come nel seguente esempio:

INPUT GEN 3. FEB 3. MAR 3.; può essere indifferentemente scritto come:

INPUT (GEN FEB MAR) (3. 3. 3.); INPUT (GEN FEB MAR) (3.);

COMBINAZIONE DEI DIVERSI TIPI DI INPUT:

Si consideri il seguente esempio:

DATA CLASSE;

INPUT NOME $ @ 11 SESSO $ 1. ETA 13-14 ALTEZZA @ 20 PESO 5.1 ; DATALINES;

GIANNI M 12 155 48.2 il segno indica uno spazio bianco

MARCO M 12 151€43.7 /* altri dati */

; RUN;

la variabile NOME è letta a lista, la variabile SESSO a formato, la variabile ETA a colonna, la variabile ALTEZZA a lista, la variabile PESO a formato.

ISTRUZIONI MULTIPLE DI INPUT:

Ogni volta che viene eseguita un'istruzione INPUT viene letto un record; se i dati relativi a una osservazione si trovano su più record bisogna mettere più istruzioni INPUT.

Esempio: DATA CLASSE;

INPUT NOME $ 1-8 SESSO $ 11; INPUT ETA 3-4;

INPUT ALTEZZA 1-4 PESO 6-10; DATALINES; GIANNI M 12 155 48.2 MARCO M 12 151 43.7 /* altri dati */ ; RUN;

Nel documento NOTE INTRODUTTIVE AL SISTEMA SAS (pagine 40-44)

Documenti correlati