DATA nomipersone;
INPUT nome$ cognome$ altezza peso;
DATALINES;
Mario Rossi 198 85
Giulia Bianchi 183 65
;
RUN
Lettura da file:
Comandi:
FIRSTOBS: riga iniziale di osservazione
OBS: quante righe leggere
MISSOVER: variabili non assegnate (mancanti -> MISSING)
TRUNCOVER: dati a fondo riga, scartati
Formato a colonne:
DATA nome;
INFILE nomefile;
INPUT nome$ 1-10 cognome$ 11-20
Altezza 21-25 peso 28-30;
RUN;
Formati alfanumerici:
: $20 rappresenta il numero massimo di caratteri in un campo (qui 20)
Formati numerici:
10.3 [numero totale di caratteri o cifre].[numero di cifre decimali]
Funzioni numeriche:
SUM(var1 var2 var3), MIN(var1 var2 var3), MAX(var1 var2 var3), MEAN(var1 var2 var3) media
CAT(var1, var2): concatena stringhe
SUBSTR(var, inizio, lunghezza): estrae sottostringa
INPUT(var, informat): converte in formato numerico
INDEX(var, sottostringa): trova una sottostringa
LENGHT(var): calcola la lunghezza
UPCASE(var): trasforma in maiuscolo
MONTH(data), YEAR(data), DAY(data)
Formati:
DATA nome;
INFILE nomefile;
INPUT nome$ +1 cognome$ @30
(altezza peso) COMMA7;
RUN;
Le parentesi raggruppano le variabili. COMMA7 legge numeri con virgole come separatore delle migliaia.
@30 va a colonna 30
Copiare:
DATA nome;
SET data set originale;
KEEP variabili da tenere;
RUN;
DATA nome;
SET data set originale;
KEEP variabili da eliminare;
RUN;
DATA nome;
SET data set originale;
KEEP variabili da tenere;
RENAME=(vecchia=nuova);
RUN;
DIAP 26
Data province;
set province;
rename sigla = prov;
run;
Entrambi i data set devono essere ordinati rispetto alla variabile guida della fusione. Uso la funzione by per
esplicitare la variabile guida
Proc sort data=acque;
by prov;
run;
data compessivo;
merge province acque;
by prov;
run;
Estrarre informazioni: proc means
Uso proc means seguito da data=file da osservare. N è numero di osservazioni (senza contare le mancanti)
La funzione può essere seguita da mean (media) min max std (deviazione standard) n (osservazioni) nmiss
(osservazioni mancanti).
Sotto la proc means posso inserire le variabili di cui calcolare valori ed estrarre informazioni usando var
seguito dalle variabili.
Posso anche calcolare statistiche non su tutti i dati ma stratificati secondo una classe, userò quindi class
seguito dal nome della variabile da stratificare. Posso mettere anche più variabili
Con var posso avere solo variabili quantitative, mentre con class variabili qualitative
Esempio:
proc means data=sashelp. Cars mean nmiss; calcola media e numero di osservazioni mancanti
var msrp invoice cylinders; per le variabili msrp, invoice e cylinders
class make: classificati secondo la variabile make
run;
Per inserire i risultati delle statistiche in un altro data set uso output out seguito da
=NomeLibreria.NomeNuovoDataSet NomeStatistica = NomeVariabileNuovoDataSet
proc means data=riassunto min; cerca nel data set riassunto il valore minimo
id make;
var media; della variabile media
output out=economico minid=produttore; e restituisci il valore della variabile make e chiamala
produttore
run;
Per avere nel dataset due diverse funzioni di variabili uso funzione (variabili da analizzare) = nuove funzioni
output out=riassunto mean(msrp invoice) = media1 media2;
Fondere data set: entrambi i data set devono essere ordinati rispetto alla variabili che uso per la fusione
proc print data=acque; run;
proc print data=province; run;
data province;
set province;
rename sigla = prov;
run;
data complessivo;
merge province acque; unisco i data province e acque
by prov; secondo la variabile prov
run;
Proc freq: analisi delle frequenze
Lo usiamo per variabili qualitative
Contare quante variabili compaiono: stessa cosa con la proc means:
oppure
proc freq …;
ods output
run;