Una libreria è un contenitore di data set. Siccome ogni data set corrisponde ad un singolo file sul disco,
una libreria corrisponde ad una cartella sul disco e tutti i file che sono dentro quella cartella saranno i
data set appartenente a quella libreria.
Vedete che alla libreria SAS help corrisponde più di una cartella, ma
ad esempio questa cartella (C:\Program Files\SAS Home\SAS
Foundation\9.4\core\sashelp) è associata alla libreria sas help
Non abbiamo visto come creare una nuova libreria e come decidere
qual è la cartella associata a quella libreria. per questo motivo
andiamo a nella nostra desktop io creo una cartella prova che clicco su
properties
Per far sì che venga creata una nuova libreria associata alla cartella che abbiamo visto prima
questo è il nome della cartella che vogliamo sia associata alla libreria che chiameremo corso. Io devo
mandare in esecuzione un'istruzione che si chiama libname che vuole come argomenti sulla riga il
nome della libreria che chiameremo corso e il nome della cartella da associare alla libreria. è
un’istruzione sas quindi alla fine deve terminare con punto e virgola.
Mandando in esecuzione questa istruzione vediamo quello che succede abbiamo il log che ci dice: è
stata eseguita questa istruzione .
il significato è in nero e quindi vuol dire che non ci sono stati errori.
Nota una cosa: corso è un riferimento è un nome una libreria assegnata con successo al nome fisico
alla cartella user gianluca.dellavedova…
Adesso che corso è diventata una libreria noi possiamo creare dei dataset all'interno di quella libreria
e scopriremo che saranno file all'interno della cartella prova ma come creare nuovi dataset e gestirli è
l'oggetto del prossimo video
LEZIONE 2 - INPUT E INFILE
Obiettivi:
1-Saper importare un file grezzo
2-Creare variabili
In questa lezione vedremo come gestire e soprattutto come creare un nuovo data set che
normalmente viene fatto a partire da un file esterno, quindi non dentro sas ma che tipicamente è già
sul vostro disco. Vado quindi ad aprire alcuni dei file che io ho preparato e in particolare iniziamo a
vedere il file snake_10.txt lo apriamo in modo normale con Notepad++
e che cosa notiamo? il file testo è organizzato in questo modo:
io ho due colonne nella prima colonna ho il valore 1 e nella
seconda ho 30. I dati sono organizzati su dieci righe. Non ho
indicazioni di nomi di variabili. Sono tutti valori numerici e sono
separati da spazi. Tutto sommato questa è una delle situazioni
ideali per sas; infatti il modo più semplice per leggere i dati è
quando i dati sono separati da spazi e ogni riga del file di dati
grezzi esterno corrisponde o dovrà corrispondere poi ad una osservazione del data set.
Per fare questo io ho due possibilità:
1- La prima è che vado nella parte “ files and folders ” vado a prendere il mio file snake_10.txt premo il
tasto destro del mouse e provo a vedere se mi permette di fare import data. In questo caso non è
possibile (vedremo più avanti come mai).
Quando questa opzione è attiva, tipicamente, è il modo più semplice per importare i dati. Non va bene
in questo caso perché richiede che il file dati grezzi abbia una certa struttura che in questo caso non
c'è. Quindi devo andare a scrivere io il programma che legge questo dato. Genero, creo un nuovo data
set e quindi ho bisogno di un data step. i data step iniziano tutti con la parola chiave data e metto il
punto e virgola e come tutti i passi terminerà con un run. L'istruzione data vuole il nome del data set
che viene creato: lo chiamerò esempio
quindi questo data step va a creare un data
set che si chiama esempio. Mando in
esecuzione solo questa parte vediamo il log cosa ci dice. Il nostro dataset non viene creato perché
non contiene nessuna colonna e non ha
nessuna variabile, il data set
WORK.ESEMPIO ha 1 osservazione e 0
variabili e l'altra cosa da notare è che
non è stato scritto esempio ma
work.esempio per quale motivo? Ho
detto la scorsa volta che i dataset sono
organizzati in librerie e che ogni libreria
corrisponde ad una cartella sul disco ad
un insieme di data set e ciò è verissimo. Quando io ho scritto però esempio sas non sapeva, perché
non gliel'ho detto a quale libreria dovesse essere aggiunto il dataset esempio.
La libreria di default è work e qua se vado a vedere libraries vediamo che
ho work e dentro un work trovo il dataset esempio e faccio doppio clic e
non c'è niente, non mi mostra niente. La libreria corso che ho creato in
precedenza invece non ha nessuno dataset al suo interno. Voglio invece
in questo caso che il dataset esempio sia nella libreria corso, e allora
dovrò chiamarlo con il nome completo che è sempre nome della libreria
punto nome del dataset.
Un limite importante da ricordare è che le librerie definite con il libname
devono necessariamente avere un nome composto al massimo da otto
caratteri, e noi useremo praticamente sempre lettere e cifre nei nomi di
librerie e dataset e poi anche il nome di variabili. Però ricordatevi una
libreria deve avere lunghezza massima 8, il nome di una libreria deve
avere lunghezza massima 8. Spesso io vedo qualcuno che prova a
chiamare una libreria esercizio, ma “esercizio” è lungo 9 e in quel caso la
libreria non funziona dando un errore. Quindi proviamo a mettere
esercizio come nome della
libreria e mandiamo in
esecuzione. Mi dice che il
termine esercizio non è un nome di libreria valido in SAS.
Il motivo è semplicemente che è troppo lungo
perché se provo a togliere la o dal termine
esercizio diventa adesso finalmente nella
lunghezza giusta, e scopriamo che adesso è
stato creato senza problemi.
Vado a ripescare il file snake_10.txt
tasto destro del mouse clicco
properties e copio le Location e le
incollo sotto data corso.esempio. Ciò
che incollo va racchiuso tra virgolette
e devo mettere infile perché l'istruzione
è infile ed inoltre devo dire quali sono le variabili e metterò input a e b [input è l'istruzione con cui
dico quali sono le variabili nel dataset] quindi avrò una variabile che si chiama a e una variabile che
si chiama b di tipo numerico. Mandiamo in esecuzione e vediamo che è il log mi dice delle cose .
Innanzitutto vediamo che non ci sono errori. Il file è stato letto e ci sono scritte alcune caratteristiche
che ci interessano molto relativamente; sono state lette dieci righe , la lunghezza minima di una riga e
5 la massima e 6 e alla fine del dataset corso.esempio, quindi del dataset esempio nella libreria corso
ha 10 osservazioni e due variabili che è esattamente quello che ci aspettavamo. In più in output data
viene mostrato uno spaccato di dataset quindi mi mostra tutto, e le due variabili sono effettivamente
a e b e tutto è letto correttamente. Un aspetto particolarmente
interessante di questo modo di
procedere è che se io prima
lavoro su un insieme piccolo e
ristretto di dati e poi applico il mio
programma al dataset completo, spesso mi basta, come in questo caso modificare infile o la input
(naturalmente solo infile) per leggere un dataset molto più grande. Mando in esecuzione il file
snake_10000.txt e ottengo 10000 righe e tutto questo viene fatto senza sforzo. Il che vuol dire,
suggerisce in maniera chiara che quello che ha senso fare è scrivere, sviluppare il programma su un
insieme estremamente piccolo e ristretto di osservazioni per poi così il mio processo di prova e
correzione diventa più veloce, per poi un passo alla volta andare a eseguire alla fine il mio programma
ormai ragionevolmente corretto sul dataset complessivo, dove impiegherà più tempo ma avrò la mia
analisi in maniera piuttosto semplice, e questo diventa il modo più semplice per leggere un dataset.
LEZIONE 3 - INTESTAZIONI
Obiettivi:
1- Saper leggere un file con un’intestazione
2- firstobs
in questo video vediamo come leggere dei file grezzi, importandoli come dataset sas, quando questi
iniziano ad avere una struttura un po più complessa.
Iniziamo come primo file di esempio che ancora una volta andremo poi a leggere, il file che è nile.txt e
come l'altra volta lo apriamo con notepad per vedere com'è fatto. Allora anche questo presenta due
variabili, ma la prima riga non sono dati veri ma sono un'indicazione delle variabili dai nomi delle
variabili che ci attendiamo overo che la prima colonna corrisponde alla variabile ”Year” e la seconda
corrisponde alla variabile “Flood”. Vado su SAS e provo ancora a lanciare
l'importazione e non posso.
Mettiamo nile.txt su infile e le due
variabili che sono year e flood
ma al tempo stesso
se mandiamo in
esecuzione questo
programma questo
data step
scopriremo nel log
che ci dice per la
riga 1 colonna da 1 a
6 e per la riga 1
colonna da 9 a 15
ho invalid data.
Non è che sas ha
capito magicamente che le stringhe year e flood non sono dati coerenti è che per come noi abbiamo
scritto quel input, le variabili year e flood devono contenere dati numerici mentre year e flood invece
sono stringhe, sono valori alfanumerici e quindi quello che SAS o meglio quello che il log in particolare
ci sta dicendo è : “guarda che nella prima riga ci sono delle stringhe ma mi hai detto che le variabili
dovranno contenere numeri quindi ho un conflitto perché i dati letti non sono validi, non vanno bene”
che cosa devo fare? devo dire a sas salta la prima riga perché contiene delle indicazioni che a noi non
interessano, è un puro commento. Saltare la prima riga è un'opzione aggiuntiva della infile che si
chiama firstobs=2 e nella seconda riga che verrà trovato l'inizio dei dati vero e proprio delle
osservazioni. Se mando in esecuzione il log ci riporta i dati letti
e ci dice ho letto 570 righe e il data set a 570
osservazioni e 2 variabili, che è esattamente
quello che ci aspettiamo! Non mi segnala nessun
tipo di errore.
una variante io ce l'ho con un altro file
che si chiama letter_frequency.txt e
andiamo a vederlo direttamente
cliccandoci sopra e cliccando su view
file as text, che è particolarmente utile
se io sono nella universe ? edition. e
qua che succede? la struttura è
abbastanza semplice ma che
differenze ho? intanto le righe di intestazione sono tre non due , il che vuol dire che io leggerò dati a
partire dalla terza riga. Quindi modifichiamo
clicco letter_frequency.txt e poi clicco su
properties mi uscirà un riquadro e seleziono nel
testo p
-
Laboratorio Informatica
-
Laboratorio informatica
-
Laboratorio di Informatica T
-
Lezioni, Laboratorio di informatica