Estratto del documento

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

Anteprima
Vedrai una selezione di 4 pagine su 14
Laboratorio di Informatica Pag. 1 Laboratorio di Informatica Pag. 2
Anteprima di 4 pagg. su 14.
Scarica il documento per vederlo tutto.
Laboratorio di Informatica Pag. 6
Anteprima di 4 pagg. su 14.
Scarica il documento per vederlo tutto.
Laboratorio di Informatica Pag. 11
1 su 14
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher ibty_05 di informazioni apprese con la frequenza delle lezioni di Laboratorio di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Milano - Bicocca o del prof Della Vedova Gianluca.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community