Sei sulla pagina 1di 5

Finestre: Editor, Log, Output, Icona esegui

Data step: righe sono le osservazioni, colonne sono le variabili


DATA nome;
/*
elenco variabili (con formato) come inserire i dati
*/ RUN;

DATA nomipersone;
INPUT nome$ cognome$ altezza peso;
DATALINES;
Mario Rossi 198 85
Giulia Bianchi 183 65
;
RUN

Valori mancanti: rappresentati da punti . ; inseriti come spazi o punti


Importazione: da file grezzi (in formato txt, csv, dat) o da wizard di importazione
Nome di data set deve essere minore o uguale a 32 caratteri, contenere lettere e cifre in fondo, nome delle
variabili minore o uguale a 32 caratteri
Ogni data set corrisponde ad un file, una directory (cartella) contenente un data set è una libreria:
LIBNAME nomelibreria directory
Data set permanente è collocato in una libreria, il data set temporaneo è in una libreria WORK. Il nome
della libreria non può superare gli 8 caratteri
Per dati si intendono dei data set oppure file di dati grezzi
Data step da dati grezzi:

DATA nomipersone; LIBNAME esercizi ‘E:\libreriaSAS”;


INFLIE ‘E:\anagrafe.txt’;
INPUT nome$ cognome$ altezza peso; DATA esercizi.nomipersone;
RUN; INFLIE ‘E:\anagrafe.txt’;
INPUT nome$ cognome$ altezza peso;
RUN;

Lettura da file:

DATA nome; DATA nome;


INFILE nomefile DLM=’,’ DSD; INFILE nomefile DLM=’09’x;
INPUT nome$ cognome$ altezza peso; INPUT nome$ cognome$ altezza peso;
RUN; RUN;

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;

Il cognome inizia alla colonna 11 e termina alla colonna 20

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]

Formati date: DDMMYY8

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

LEGGERE UN FILE GREZZO COMPLESSO:


una variabile in SAS non può superare i 32 caratteri, quindi bisogna rinominare le variabili in input che non
rispettano questa regola
$:40 indica carattere alfanumerico del quale vogliamo vedere solo 40 caratteri
Come leggere le date: se ho mese / giorno / anno uso accanto alla variabile MMDDYY10 (2 caratteri per il
mese, 2 per il giorno, primi 2 per l’anno, complessivamente 10 caratteri). Avrò nella riga di input:
input … birth_date MMDDYY10 … ;
posso anche variare l’ordine di M, D e Y rispetto al formato di data che ho. Se ho complessivamente 8
caratteri perché la data è del tipo 12/4/20 userò la forma DDMMYY8.
Se ho una data del tipo 16Apr2020 uso date9 ho complessivamente 9 caratteri

COME ESTRARRE UNA INFORMAZIONE DA UN DATA SET:


proc means: possiamo calcolare una serie di statistiche di un data set. Vengno calcolate alcune statistiche
di default: media, deviazione standard, minimo, massimo e numero di osservazioni in cui la variabile
assume valore (N). indico il valore che voglio di seguito al nome del file. Dopo il comando var esplicito le
variabili di cui voglio calcolare le statistiche.
mean media, min minimo, max massimo, std deviazione standard, n osservazioni, nmiss osservazioni
mancanti
proc means data=sashelp.card mean min max std n nmiss;
var msrp invoice cylinders;

COME FONDERE 2 DATASET:


Devo avere la variabile che guida la fusione con nome uguale in entrambi i data set. Per fare ciò uso
rename

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;

Proc sort data=province;


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;

Concatenare data set:

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;

proc sort data=acque; ordino secondo la variabile prov


by prov;
run;

proc sort data=province;


by 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:

proc freq data=NomeLib.NomeDataSet; proc means data=NomeLib.NomeDataSet n;


tables NomeVariabile; var NomeVariabile;
run; class NomeVariabileStratificazione;
run;

Posso anche calcolare le frequenze per più variabili unendole da asterischi


proc freq data=NomeLib.NomeDataSet;
tables Variabile1 * Variabile2;
run;

weight: peso delle frequenze. Variabile sempre quantitativa

ODS: Output Delivery System


ods trace on;
proc freq …;
run;
ods trace off;

oppure

proc freq …;
ods output
run;

Potrebbero piacerti anche