9 introduzione r

4,563 views

Published on

Una breve introduzione al software R.

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,563
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
621
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

9 introduzione r

  1. 1. Una introduzione ad R parte I C. White, Part of “ Drops of Rain”, 1967 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  2. 2. “La potenza è nulla senza controllo” Pubblicità PirelliTuesday, March 6, 12
  3. 3. Una Introduzione ad R: parte I Sommario •R: un ambiente open source per l’analisi statistica dei dati •Le funzionalità dell’ambiente R •Creazione e importazione dei dati Tratta dalle presentazioni di Corrado Caudek della facoltà di psicologia dell’università di Firenze nel corso di Tecniche di Ricerca Psicologica e di Analisi dei Dati, A.A. 2007/2008 3 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  4. 4. Una Introduzione ad R: parte I R: un ambiente opensource per l’analisi statistica dei dati Che cos’è R? Che cos’è R? R è un software che permette di elaborare dati, eseguire calcoli ed effettuare rappresantazioni grafiche. E’ distribuito gratuitamente ed disponibile per diversiCorrado Caudek sistemi operativi: Windows, MacOS, Unix, Linux. Sul sito http://www.r-project.org è possibile scaricare, oltre che il programma base, anche una serie di moduli aggiuntivi (packages) e un’ampia manualistica. 4 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  5. 5. Una Introduzione ad R: parte I R: un ambiente opensource per l’analisi statistica dei dati Installazione InstallazioneCorrado Caudek 5 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  6. 6. Una Introduzione ad R: parte II 6Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  7. 7. Una Introduzione ad R: parte I R: un ambiente opensource per l’analisi statistica dei dati Installazione InstallazioneCorrado Caudek 7 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  8. 8. Una Introduzione ad R: parte I R: un ambiente opensource per l’analisi statistica dei dati Installazione InstallazioneCorrado Caudek 8 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  9. 9. Una Introduzione ad R: parte I R: un ambiente opensource per l’analisi statistica dei dati Installazione Pacchetti Pacchetti Il modulo base offre gli strumenti fondamentali per l’analisi statistica. Questo modulo base può essere integrato da una serie diCorrado Caudek altre librerie addizionali che possono essere installate dall’utente dopo averle scaricate dal sito succitato. Sul sito del The Comprehensive R Archive Network - CRAN è possibile scaricare un grande numero di packages che spaziano nei più disparati campi della statistica applicata. 9 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  10. 10. Una Introduzione ad R: parte I R: un ambiente opensource per l’analisi statistica dei dati Installazione Pacchetti PacchettiCorrado Caudek 10 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  11. 11. Una Introduzione ad R: parte I R: un ambiente opensource per l’analisi statistica dei dati Interagire con R La R-console Interfaccia CUI Come indicato dall’esempio precedente, R utilizza un’interfaccia utente a carattere (CUI) in cui le funzioni e le istruzioni vengono immesse da una linea di comando.Corrado Caudek Esiste un’interfacca GUI chiamata R Commander che è equivalente a quella dei software commerciali. Per motivi di ordine didattico, in questo corso impareremo ad usare direttamente le funzioni di R attraverso la R-console, senza ricorrere all’interfaccia grafica. 11 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  12. 12. Una Introduzione ad R: parte I R: un ambiente opensource per l’analisi statistica dei dati Interagire con R La R-console Perché R? C’è un preciso motivo didattico per decidere di usare R senza l’interfaccia grafica: è inutile e dannoso svolgere una qualunque analisi dei datiCorrado Caudek senza capire che cosa si sta facendo; l’utilizzo di R aiuta a rendere esplicite le operazioni che stanno alla base delle analisi statistiche e quindi rappresenta un efficace strumento didattico. 12 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  13. 13. Una Introduzione ad R: parte I R: un ambiente opensource per l’analisi statistica dei dati Interagire con R La R-console Perché R? Al di là dei suoi vantaggi didattici, il software R fornisce uno strumento di lavoro professionale che consente di svolgere la grande maggioranza delle analisi dei dati psicologici;Corrado Caudek consente di svolgere con semplicità la visualizzazione e l’analisi esplorativa dei dati – due operazioni che sono specialmente importanti per l’analisi dei dati psicologici; è corredato da un’ampia documentazione; è gratuito. •si possono lanciare script 13 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  14. 14. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Sommario Elementi di sintassi Iniziare e chiudere una sessione di R AritmeticaCorrado Caudek Vettori Gestione di vettori La matrice dei dati Definizione Il dataframe Lo spazio di lavoro Workspace La funzione search() La funzione attach() La funzione detach() 14 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  15. 15. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Iniziare e chiudere una sessione di R Iniziare e chiudere una sessione di R Per iniziare una sessione R fare un doppio click di mouse sulla icona di R. Per uscire da R, chiudere la finestra della R-console.Corrado Caudek Alla domanda rispondere “Registro un’immagine del workspace?” rispondere “No”. Se si risponde affermativamente, i dati e le variabili della sessione corrente verranno salvati per la sessione successiva. Per liberarsi di questi dati, digitare > unlink(".RData") 15 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  16. 16. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Aritmetica Semplice aritmetica In R, qualunque cosa venga scritta al prompt viene valutata: > 2+3Corrado Caudek [1] 5 > 2-3 [1] -1 > 2*3 [1] 6 > 2/3 [1] 0.6666667 > 2^3 [1] 8 16 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  17. 17. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Aritmetica Semplice aritmetica > 4^2-3*2 [1] 10 > (4^2)-(3*2)Corrado Caudek [1] 10 > 2^-3 [1] 0.125 > -2--3 [1] 1 > -2 - -3 [1] 1 17 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  18. 18. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Aritmetica Assegnazione di valori Si può salvare un valore assegnandolo ad un oggetto mediante l’operatore “<-”: > a <- 2Corrado Caudek > a [1] 2 L’operatore “<-” si ottiene digitando “<” seguito da “-” (senza spazi tra i due). 18 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  19. 19. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Aritmetica Maiuscole e minuscole Si faccia attenzione che R è sensibile alla distinzione tra maiuscole e minuscole. Di conseguenza l’oggetto “a” è diverso dall’oggetto “A”:Corrado Caudek > A Errore: oggetto "A" non trovato > a [1] 2 19 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  20. 20. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Vettori Vettori Dal nostro punto di vista, i software statistici come R sono utili perché consentono di manipolare, non soltanto gli scalari (come fa qualunque calcolatrice portatile), maCorrado Caudek direttamente i vettori di una matrice di dati. Un vettore di dimensione n può essere definito come una sequenza ordinata di n numeri. Ad esempio (2, 5, 9.5, -3) rappresenta un vettore di dimensione 4 in cui il primo elemento è 2 ed il quarto è -3. 20 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  21. 21. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Vettori Vettori Esistono molti modi per costruire un vettore nell’ambiente R, il più comune è utilizzare la funzione c(): > x <- c(2, 5, 9.5, -3)Corrado Caudek > x [1] 2.0 5.0 9.5 -3.0 Le variabili di una matrice di dati sono oggetti di questo tipo. 21 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  22. 22. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Vettori Vettori Abbiamo visto in precedenza come applicare le operazioni aritmetiche agli scalari: > a <- 2Corrado Caudek > a [1] 2 > a + 2 [1] 4 Queste stesse le operazioni aritmetiche possono essere applicate ai vettori. 22 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  23. 23. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Vettori Operazioni sui vettori Le operazioni aritmetiche applicate ai vettori sono eseguite elemento per elemento: > xCorrado Caudek [1] 2.0 5.0 9.5 -3.0 > x + 2 [1] 4.0 7.0 11.5 -1.0 > x / 2 [1] 1.00 2.50 4.75 -1.50 > a [1] 2 > a * x [1] 4 10 19 -6 23 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  24. 24. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Vettori Operazioni sui vettori Si noti come, nel caso di un’operazione algebrica compiuta su un vettore e uno scalare, quello che facciamo è semplicemente di ripetere l’operazione algebrica per ciascuno degli elementi del vettore.Corrado Caudek Nel primo esempio, abbiamo eseguito 4 somme, una per ciascuno degli elementi del vettore x. Nel secondo caso, sono stati eseguiti 4 rapporti. 24 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  25. 25. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Vettori Selezione degli elementi dei vettori Come possono essere selezionati gli elementi di un vettore? Gli elementi di un vettore possono essere selezionatiCorrado Caudek usando le parentesi quadre []: > x [1] 2.0 5.0 9.5 -3.0 > > x[2] [1] 5 > > x[2] / x[1] [1] 2.5 25 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  26. 26. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Gestione di vettori Gestione di vettori R offre varie funzioni per la manipolazione dei vettori. Per i nostri scopi, sarà necessario conoscere le funzioni che consentono di calcolareCorrado Caudek il numero di elementi contenuti in un vettore: length() il valore massimo degli elementi di un vettore: max() il valore minimo degli elementi di un vettore: min() la somma degli elementi di un vettore: sum() 26 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  27. 27. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Gestione di vettori Funzioni R Le funzioni R richiedono uno o più argomenti che vengono inseriti all’interno di parentesi tonde. Per esempio, la funzione per calcolare la media di una variabile, mean() richiede come argomento il nome dellaCorrado Caudek variabile, per esempio x, di cui si vuole calcolare la media: > mean(x) La funzione plot() utilizzata per creare un diagramma di dispersione richiede due argomenti, separati da una virgola, la variabile x posta in ascissa e la variabile y in ordinata: > plot(x, y) 27 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  28. 28. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Gestione di vettori Gestione di vettori > x [1] 2.0 5.0 9.5 -3.0 > length(x)Corrado Caudek [1] 4 > min(x) [1] -3 > max(x) [1] 9.5 > sum(x) [1] 13.5 > mean(x) [1] 3.375 28 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  29. 29. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Gestione di vettori Media La media di x è n i=1 xi ¯= x nCorrado Caudek > sum(x) [1] 13.5 > length(x) [1] 4 > sum(x)/length(x) [1] 3.375 > mean(x) [1] 3.375 n Si noti che la funzione sum(x) esegue la somma i=1 xi . 29 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  30. 30. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Gestione di vettori Varianza Calcoliamo ora la varianza di x è n i=1 (xi ¯)2 x s2 = xCorrado Caudek n 1 Gli scarti di ciascun valore dalla media sono > x - mean(x) [1] -1.375 1.625 6.125 -6.375 Il quadrato degli scarti è > ( x - mean(x) )^2 [1] 1.890625 2.640625 37.515625 40.640625 30 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  31. 31. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Gestione di vettori Varianza La somma del quadrato degli scarti è > sum( ( x - mean(x) )^2 ) [1] 82.6875 Il numeratore della varianza è la devianza: n (xi ¯)2 .xCorrado Caudek i=1 La devianza divisa per i gradi di libertà (n 1) produce la varianza: > sum( ( x - mean(x) )^2 ) / (length(x)-1) [1] 27.5625 Lo stesso risultato viene prodotto dalla funzione var(): > var(x) [1] 27.5625 31 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  32. 32. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Gestione di vettori Deviazione standard La radice quadrata della varianza è la deviazione standard ⇥ n i=1 (xi ¯)2 x sx =Corrado Caudek n 1 > sqrt( sum( ( x - mean(x) )^2 ) / (length(x)-1) ) [1] 5.25 > sd(x) [1] 5.25 > sqrt(var(x)) [1] 5.25 32 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  33. 33. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Elementi di sintassi Gestione di vettori summary() La funzione summary() è molto utile per ottenere alcune statistiche descrittive di una variabile: il valore minimo, il massimo, il primo quartile, il terzoCorrado Caudek quartile, la mediana e la media. > summary(x) Min. 1st Qu. Median Mean 3rd Qu. Max. -3.000 0.750 3.500 3.375 6.125 9.500 33 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  34. 34. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R La matrice dei dati Definizione Matrice dei dati Il ricercatore sceglie un certo insieme di oggetti (detti casi – per es., soggetti) e registra il loro stato su alcune proprietà (per es., intelligenza), che vengono trasformate inCorrado Caudek variabili mediante altrettante definizioni operative (per es., il punteggio di QI prodotto dalla WAIS-III). Se la registrazione è sistematica (si registra lo stato di tutti i casi su tutte le proprietà), è possibile organizzare l’informazione raccolta in una matrice dei dati. 34 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  35. 35. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R La matrice dei dati Definizione Matrice dei dati La matrice dei dati ha tante righe quanti sono i casi e tante colonne quante sono le variabili. Nell’intersezione tra una riga e una colonna sta un dato,Corrado Caudek cioè il valore assegnato a un certo caso su una certa proprietà. 35 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  36. 36. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R La matrice dei dati Definizione Matrice dei datiCorrado Caudek Si noti che, a differenza da quanto indicato nella figura, R non consente l’uso di spazi nelle etichette utilizzate per le modalità delle variabili qualitative. 36 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  37. 37. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R La matrice dei dati Definizione Matrice dei dati Come indicato nella figura, la matrice dei dati contiene sia variabili quantitative, sia variabili qualitative. Le colonne della matrice dei dati che contengono variabiliCorrado Caudek quantiative sono dette vettori. 37 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  38. 38. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R La matrice dei dati Il dataframe La matrice di dati in R La matrice di dati viene generata in R con la funzione data.frame(). Supponiamo di avere tre variabili costituite dallo stesso numero di elementi:Corrado Caudek > x <- c(1, 2, 3, 3, 5, 7) > y <- c(2, 3, 1, 4, 6, 8) > z <- factor( c(’a’,’b’,’c’,’a’,’b’,’c’) ) Le variabili x e y sono quantitative; la variable z è qualitativa. 38 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  39. 39. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R La matrice dei dati Il dataframe Funzione factor() Si noti la particolare sintassi usata per creare una variabile qualitativa. In primo luogo, la funzione factor() specifica che laCorrado Caudek variabile va intesa come una variabile qualitativa. In secondo luogo, gli elementi passati alla fuzione c() sono racchiusi da virgolette. > z <- factor( c(’a’,’b’,’c’,’a’,’b’,’c’) ) > z [1] a b c a b c Levels: a b c 39 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  40. 40. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R La matrice dei dati Il dataframe Funzione data.frame() La matrice di dati che contiene le variabili x, y, z si costruisce nel modo seguente: > dat <- data.frame(x, y, z)Corrado Caudek > dat x y z 1 1 2 a 2 2 3 b 3 3 1 c 4 3 4 a 5 5 6 b 6 7 8 c Abbiamo così costruito un oggetto R di classe data.frame. 40 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  41. 41. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R La matrice dei dati Il dataframe Dimensioni del dataframe Il numero di righe e di colonne di un dataframe viene calcolato dalla funzione dim(): > dim(dat)Corrado Caudek [1] 6 3 > > dat x y z 1 1 2 a 2 2 3 b 3 3 1 c 4 3 4 a 5 5 6 b 6 7 8 c 41 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  42. 42. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R La matrice dei dati Il dataframe Selezionare una parte del dataframe Come nel caso dei vettori, gli elementi di un dataframe possono essere selezionati utilizzando le parentesi quadre, ovvero specificando il numero di riga (primoCorrado Caudek parametro) e il numero di colonna (secondo parametro): > dat x y z 1 1 2 a 2 2 3 b 3 3 1 c 4 3 4 a 5 5 6 b 6 7 8 c > dat[3,2] [1] 1 > dat[5,3] [1] b 42 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  43. 43. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R La matrice dei dati Il dataframe Selezionare una parte del dataframe Se uno dei due indici non viene specificato, si intendono tutti gli elementi di quella/e riga/e o colonna/e: > dat[,1]Corrado Caudek [1] 1 2 3 3 5 7 > dat[,2] [1] 2 3 1 4 6 8 > dat[,3] [1] a b c a b c Levels: a b c > > dat[2,] x y z 2 2 3 b > dat[3,] x y z 3 3 1 c 43 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  44. 44. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R La matrice dei dati Il dataframe Operatore : L’operatore : viene usato per indicare la gamma di variazione di un indice. Per esempio, per selezionare le righe 3, 4, 5, 6 dalCorrado Caudek dataframe dat usiamo la seguente sintassi: > dat[3:6, ] x y z 3 3 1 c 4 3 4 a 5 5 6 b 6 7 8 c 44 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  45. 45. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Lo spazio di lavoro Workspace Lo spazio di lavoro Gli oggetti presenti nello spazio di lavoro (workspace) possono essere elencati usando la funzione ls(): > ls()Corrado Caudek [1] "dat" "x" "y" "z" Eliminiamo ora dallo spazio di lavoro gli oggetti x, x, z: > rm(x, y, z) > ls() [1] "dat" 45 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  46. 46. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Lo spazio di lavoro Workspace Lo spazio di lavoro Si noti che l’oggetto x, per esempio, non è più presente nello spazio di lavoro, pur essendo contenuto nel dataframe dat:Corrado Caudek > x Errore: oggetto "x" non trovato > dat x y z 1 1 2 a 2 2 3 b 3 3 1 c 4 3 4 a 5 5 6 b 6 7 8 c 46 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  47. 47. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Lo spazio di lavoro La funzione attach() La funzione attach() Utilizziamo ora la funzione attach() a cui passiamo come parametro il nome dell’oggetto dat avente classe data.frame:Corrado Caudek > attach(dat) > search() [1] ".GlobalEnv" "dat" [3] "tools:RGUI" "package:stats" [5] "package:graphics" "package:grDevices" [7] "package:utils" "package:datasets" [9] "package:methods" "Autoloads" [11] "package:base" 47 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  48. 48. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Lo spazio di lavoro La funzione attach() La funzione attach() Ora dat è presente nel percorso di ricerca. Quando digitiamo x, l’interprete R svolge una ricerca in tutte le locazioni specificate dal percorso di ricerca, cheCorrado Caudek ora comprende il dataframe dat, e recupera la variabile x dal dataframe dat: > x [1] 1 2 3 3 5 7 48 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  49. 49. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Lo spazio di lavoro La funzione attach() La funzione attach() Si tenga a mente che è pericoloso applicare la funzione attach() a più di un dataframe simultaneamente. Se due dataframe contengono due variabili diverse, maCorrado Caudek aventi lo stesso nome, l’interprete R ne selezionerà quella contenuta nel dataframe che precede l’altro nel percorso di ricerca. Questo può non essere quello che intende l’utente. Per evitare pasticci, dunque, quando un dataframe non viene più utilizzato, è opportuno eliminarlo dal percorso di ricerca. 49 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  50. 50. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Lo spazio di lavoro La funzione detach() La funzione detach() Dal momento che le variabili in un dataframe possono “mascherare” le variabili in un altro dataframe, è buona pratica usare la funzione attach() con un dataframe allaCorrado Caudek volta. Un data frame può essere rimosso dal percorso di ricerca mediante la funzione detach(): > detach(dat) > x Errore: oggetto "x" non trovato 50 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  51. 51. Una Introduzione ad R: parte I Le funzionalità dell’ambiente R Lo spazio di lavoro La funzione detach() Selezione di una variabile da un dataframe In alternativa, senza utilizzare la funzione attach(), una variabile può essere recuperata direttamente da un dataframe utilizzando la seguente sintassi:Corrado Caudek > x Errore: oggetto "x" non trovato > dat$x [1] 1 2 3 3 5 7 51 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  52. 52. Una Introduzione ad R: parte I Creazione e importazione di dati Importazione di dati Funzione read.table() Importazione dei dati L’inserimento dei dati nello spazio di lavoro può essere affrontato mediante la funzione data.frame(). Alternativamente, X<-data.frame() crea un dataframeCorrado Caudek che è poi possibile aprire con fix(X) per l’inserimento dei dati direttamente nelle celle. Un’altra possibilità è quella di importare i dati che sono disponibili in un file ASCII creato da un qualsiasi altro programma. 52 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  53. 53. Una Introduzione ad R: parte I Creazione e importazione di dati Importazione di dati Funzione read.table() Importazione dei dati contenuti in un file ASCII La funzione da utilizzare a tale scopo è read.table(). Si supponga che il file ASCII duncan.txt sia così costituito:Corrado Caudek type income education prestige prof 62 86 82 prof 72 76 83 prof 75 92 90 prof 55 90 76 prof 64 86 90 ... Si noti che la prima riga contiene il nome delle variabili. 53 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  54. 54. Una Introduzione ad R: parte I Creazione e importazione di dati Importazione di dati Funzione read.table() Importazione dei dati contenuti in un file ASCII La prima operazione da fare è quella di selezionare, mediante il menu della R-console, l’opportuna cartella di lavoro che contiene il file di dati.Corrado Caudek Fatto ciò, i dati possono essere importati nell’ambiente R nel modo seguente: > duncan <- read.table("duncan.txt", header=TRUE) 54 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  55. 55. Una Introduzione ad R: parte I Creazione e importazione di dati Importazione di dati Funzione read.table() Importazione dei dati contenuti in un file ASCII Si noti che il nome del file deve essere racchiuso da virgolette doppie; il nome del file deve contenere l’estensione .txt; l’argomento header= TRUE specifica che la prima riga delCorrado Caudek file contiene il nome delle variabili; i due argomenti (il nome del file "duncan.txt" e l’argomento header= TRUE) devono essere separati da una virgola; mediante l’operatore “<-” abbiamo creato l’oggetto duncan che conterrà la matrice dei dati. 55 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  56. 56. Una Introduzione ad R: parte I Creazione e importazione di dati Importazione di dati Funzione read.table() Importazione dei dati contenuti in un file ASCII Digitando il nome di un oggetto, il contenuto di quell’oggetto viene stampato nella R-console. Nel caso presente, digitando duncan otteniamo:Corrado Caudek > duncan type income education prestige 1 prof 62 86 82 2 prof 72 76 83 3 prof 75 92 90 4 prof 55 90 76 5 prof 64 86 90 ... 56 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  57. 57. Una Introduzione ad R: parte I Creazione e importazione di dati Importazione di dati Funzione read.table() Importazione dei dati contenuti in un file ASCII Quello che abbiamo fatto fino ad ora è di creare un oggetto chiamato duncan che è disponibile nella memoria di lavoro di R e che contiene le variabili type, income,Corrado Caudek education e prestige. Ovviamente, siamo interessati alle variabili contenute in duncan e non all’oggetto duncan nel suo complesso. 57 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  58. 58. Una Introduzione ad R: parte I Creazione e importazione di dati Importazione di dati Funzione read.table() Dataframe nello spazio di lavoro Se digitiamo il nome di una variabile, es. education, notiamo che tale variabile non è presente nello spazio di lavoro:Corrado Caudek > education Errore: oggetto "education" non trovato Per rendere disponibili nello spazio di lavoro le variabili contenute nel data frame duncan usiamo la funzione attach(): > education [1] 86 76 92 90 86 84 93 100 87 86 74 98 97 [14] 84 91 34 45 56 44 82 72 55 71 50 23 39 [27] 28 32 22 25 29 7 26 19 15 20 26 28 17 [40] 22 30 25 20 47 32 58 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  59. 59. Una Introduzione ad R: parte I Creazione e importazione di dati Importazione di dati Funzione read.table() Media A questo punto, education è presente nello spazio di lavoro e può essere manipolata usando le funzioni di R. Contiamo il numero di casi:Corrado Caudek > length(education) [1] 45 Calcoliamo la media di education: > mean(education) [1] 52.55556 59 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  60. 60. Una Introduzione ad R: parte I Creazione e importazione di dati Importazione di dati Funzione read.table() Media La media è uguale a n ¯ i=1 Yi Y=Corrado Caudek n La somma degli elementi di una variabile si calcola nel modo seguente: > sum(education) [1] 2365 Calcoliamo nuovamente la media di education: > sum(education)/length(education) [1] 52.55556 60 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  61. 61. Una Introduzione ad R: parte I Creazione e importazione di dati Importazione di dati Funzione read.table() Varianza Pn i=1 (Yi Y)2 ¯ La varianza di education è s2 Y = n 1 Gli scarti dei valori di education dalla media sono:Corrado Caudek > education - mean(education) [1] 33.444444 23.444444 39.444444 37.444444 [5] 33.444444 31.444444 40.444444 47.444444 [9] 34.444444 33.444444 21.444444 45.444444 [13] 44.444444 31.444444 38.444444 -18.555556 [17] -7.555556 3.444444 -8.555556 29.444444 [21] 19.444444 2.444444 18.444444 -2.555556 [25] -29.555556 -13.555556 -24.555556 -20.555556 [29] -30.555556 -27.555556 -23.555556 -45.555556 [33] -26.555556 -33.555556 -37.555556 -32.555556 [37] -26.555556 -24.555556 -35.555556 -30.555556 [41] -22.555556 -27.555556 -32.555556 -5.555556 [45] -20.555556 61 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  62. 62. Una Introduzione ad R: parte I Creazione e importazione di dati Importazione di dati Funzione read.table() Varianza Gli scarti al quadrato sono: > ( education - mean(education) )^2 [1] 1118.530864 549.641975 1555.864198 1402.086420Corrado Caudek [5] 1118.530864 988.753086 1635.753086 2250.975309 [9] 1186.419753 1118.530864 459.864198 2065.197531 [13] 1975.308642 988.753086 1477.975309 344.308642 [17] 57.086420 11.864198 73.197531 866.975309 [21] 378.086420 5.975309 340.197531 6.530864 [25] 873.530864 183.753086 602.975309 422.530864 [29] 933.641975 759.308642 554.864198 2075.308642 [33] 705.197531 1125.975309 1410.419753 1059.864198 [37] 705.197531 602.975309 1264.197531 933.641975 [41] 508.753086 759.308642 1059.864198 30.864198 [45] 422.530864 62 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  63. 63. Una Introduzione ad R: parte I Creazione e importazione di dati Importazione di dati Funzione read.table() Varianza La somma degli scarti al quadrato è: > sum( ( education - mean(education) )^2 ) [1] 38971.11Corrado Caudek Dividendo per n 1 si ottiene la varianza > sum((education - mean(education))^2)/(length(education) - 1) [1] 885.707 > var(education) [1] 885.707 63 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  64. 64. Una Introduzione ad R: parte I Creazione e importazione di dati Importazione di dati Funzione read.table() Deviazione standard La deviazione standard è la radice quadrata della varianza: Pn i=1 (Yi Y)2 ¯ s= n 1Corrado Caudek > sd(education) [1] 29.76083 > sqrt(var(education)) [1] 29.76083 64 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  65. 65. Una Introduzione ad R: parte I Creazione e importazione di dati Importazione di dati Funzione read.table() summary() Si noti che informazioni base sulle variabili contenute in un dataframe si possono ottenere usando la funzione summary():Corrado Caudek > summary(duncan) type income education prestige bc :21 Min. : 7.00 Min. : 7.00 Min. : 3.00 prof:18 1st Qu.:21.00 1st Qu.: 26.00 1st Qu.:16.00 wc : 6 Median :42.00 Median : 45.00 Median :41.00 Mean :41.87 Mean : 52.56 Mean :47.69 3rd Qu.:64.00 3rd Qu.: 84.00 3rd Qu.:81.00 Max. :81.00 Max. :100.00 Max. :97.00 65 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  66. 66. Una Introduzione ad R: parte I Creazione e importazione di dati Sequenze Creare una sequenza Sequenze R offre varie funzioni per per creare vettori che sono sequenze di numeri. Per i nostri scopi, utilizzeremmoCorrado Caudek l’operatore : seq() rep() 66 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  67. 67. Una Introduzione ad R: parte I Creazione e importazione di dati Sequenze Creare una sequenza Sequenze Operatore : L’operatore : consente di generare sequenze di numeri interi:Corrado Caudek > 1:4 [1] 1 2 3 4 67 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  68. 68. Una Introduzione ad R: parte I Creazione e importazione di dati Sequenze Creare una sequenza Sequenze Operatore : Tale operatore può essere usato all’interno delle parentesi quadre che per specificare i valori dell’indice che individuaCorrado Caudek gli elementi di un vettore: > y <- c(2, 3, 5, 1, 9) > y [1] 2 3 5 1 9 > y[2] [1] 3 > y[2:4] [1] 3 5 1 68 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  69. 69. Una Introduzione ad R: parte I Creazione e importazione di dati Sequenze Creare una sequenza Sequenze Funzione seq() La funzione seq() consente di generare sequenze di numeri più complesse:Corrado Caudek > seq(2, 8, by=2) [1] 2 4 6 8 > seq(0, 1, by=.1) [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 > seq(1, 30, length.out=10) [1] 1.00 4.22 7.44 10.67 13.89 17.11 20.33 [8] 23.56 26.78 30.00 69 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  70. 70. Una Introduzione ad R: parte I Creazione e importazione di dati Sequenze Creare una sequenza Sequenze Funzione rep() Qui sono forniti alcuni esempi relativi alla funzione rep(): > rep(c(1, 2, 3), each=3)Corrado Caudek [1] 1 1 1 2 2 2 3 3 3 > f1 <- factor( rep(c(’a’, ’b’, ’c’), each=3) ) > f1 [1] a a a b b b c c c Levels: a b c 70 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  71. 71. Una Introduzione ad R: parte I Creazione e importazione di dati Matrici numeriche Creazioni di matrici numeriche Matrici Per creare una matrice di dati si utilizza il comando matrix(): > X <- matrix(c( + 4, 3, 6,Corrado Caudek + 1, 5, 2, + 3, 2, 7, + 9, 3, 1), + ncol=3, byrow=TRUE) > X [,1] [,2] [,3] [1,] 4 3 6 [2,] 1 5 2 [3,] 3 2 7 [4,] 9 3 1 Bisogna specificare nrow o ncol per comunicare a R la dimensione della matrice; byrow=TRUE significa che la matrice è riempita seguendo le righe. 71 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  72. 72. Una Introduzione ad R: parte I Creazione e importazione di dati Matrici numeriche Creazioni di matrici numeriche Selezione degli elementi di una matrice Per estrarre da una matrice un elemento, bisogna specificarne le due coordinate (ovvero il numero della riga e il numero della colonna) usando le parentesi quadre:Corrado Caudek > X [,1] [,2] [,3] [1,] 4 3 6 [2,] 1 5 2 [3,] 3 2 7 [4,] 9 3 1 > > X[3,1] [1] 3 > X[4,3] [1] 1 72 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  73. 73. Una Introduzione ad R: parte I Creazione e importazione di dati Matrici numeriche Creazioni di matrici numeriche Selezione degli elementi di una matrice Se non si indica una delle coordinate, si ottiene un’intera riga/colonna. Per selezionare una colonna della matrice basta omettereCorrado Caudek l’indice delle righe: > X [,1] [,2] [,3] [1,] 4 3 6 [2,] 1 5 2 [3,] 3 2 7 [4,] 9 3 1 > > X[, 2] [1] 3 5 2 3 > X[, 3] [1] 6 2 7 1 73 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  74. 74. Una Introduzione ad R: parte I Creazione e importazione di dati Matrici numeriche Creazioni di matrici numeriche Selezione degli elementi di una matrice Per selezionare una riga basta omettere l’indice delle colonne: > XCorrado Caudek [,1] [,2] [,3] [1,] 4 3 6 [2,] 1 5 2 [3,] 3 2 7 [4,] 9 3 1 > > X[2, ] [1] 1 5 2 > X[4, ] [1] 9 3 1 74 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  75. 75. Una Introduzione ad R: parte I Creazione e importazione di dati Matrici numeriche Creazioni di matrici numeriche Dimensioni della matrice La funzione dim() indica la dimensione (numero di righe e numero di colonne) della matrice: > XCorrado Caudek [,1] [,2] [,3] [1,] 4 3 6 [2,] 1 5 2 [3,] 3 2 7 [4,] 9 3 1 > > dim(X) [1] 4 3 75 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  76. 76. Un introduzione ad R parte II C. White, Part of “ Drops of Rain”, 1967 Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  77. 77. Una Introduzione ad R: parte II La potenza è nulla senza controllo Pubblicità della Pirelli Sommario 77Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  78. 78. Una Introduzione ad R: parte II La potenza è nulla senza controllo Pubblicità della Pirelli Sommario • Nella lezione presente si introduce l’uso di R, facendo alcune semplici operazioni 77Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  79. 79. Una Introduzione ad R: parte II Filosofando... Ingenui, se fino a questo momento credevate che un buon software possa risolvere tutti i vostri problemi di tipo statistico, ricordatevi bene che in realtà non esiste un sostituto per l’esperienza e la conoscenza di un esperto, anche se l’analisi statistica da eseguire può sembrare semplice! Né R né qualunque altro sistema statistico vi daranno l’esperienza statistica necessaria per usare tecniche sofisticate, o per sapere quando i metodi semplici non sono sufficienti. In attesa di trovare un adeguato detto in Latino, accontentiamoci di uno in Inglese: "The data analyst knows more than the computer: failure to use that knowledge produces inadequate data analysis." “Toller-Confucio” 78Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  80. 80. Una Introduzione ad R: parte II Un Caso: l’analisi delle portate dell’Adige a Ponte S. Lorenzo 79Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  81. 81. Una Introduzione ad R: parte II Prima di tutto bisogna sapere in quale directory (folder) è R #per vedere i files della directory in cui si sta lavorando list.files() 80Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  82. 82. Una Introduzione ad R: parte II 81Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  83. 83. Una Introduzione ad R: parte II In seguito e’ senzaltro necessario cambiare directory, lo si puo’ fare con setwd("Documents/AAA-Idrologia/LezioniIdrologia/R/ Dati_Comandi/") questo perchè nel mio computer, il file 1990-2005.txt che contiene i dati di portata è nella directory: "/home/riccardo/AAA-Idrologia/LezioniIdrologia/R/Dati_Comandi/". > f<-"/Users/Matteo/Documents/costruz_idrauliche/6b- R/Dati_Comandi/1990-2005.txt" > dirname(f) [1] "/Users/Matteo/Documents/costruz_idrauliche/6b- R/Dati_Comandi" > setwd(dirname(f) 82Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  84. 84. Una Introduzione ad R: parte II Un nuovo list.files() permette di verificare quali files siano effettivamente presenti nella directory. Il file 1990-2005.txt è un file di testo (o file ASCII) e non contiene nessuno dei caratteri di controllo tipici di programmi di formattazione dei testi (come MS Word). 83Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  85. 85. Una Introduzione ad R: parte II Un nuovo list.files() permette di verificare quali files siano effettivamente presenti nella directory. Il file 1990-2005.txt è un file di testo (o file ASCII) e non contiene nessuno dei caratteri di controllo tipici di programmi di formattazione dei testi (come MS Word). 83Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  86. 86. Una Introduzione ad R: parte II Questo file non è comunque un esempio da seguire. Un file di dati veramente usabile deve essere accompagnato dagli appositi metadati che ne specificano i contenuti. 84Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  87. 87. Una Introduzione ad R: parte II Il file può essere letto con vari metodi (per esempio) usando read.table(), ma qui, usiamo un comando diverso che si trova nel pacchetto Zoo - Z’s ordered obiservations. Innanzitutto bisogna caricare il pacchetto con il comando: > library(zoo) naturalmente, se nella cartella, library è presente, il pacchetto, opportunamente scaricato e decompattato dal CRAN > install.packages("zoo") Una volta caricata la libreria, per leggere il file basta usare il comando: > read.zoo(“1990-2005.txt”) -> prt Per avere delle statistiche elementari sui dati, basta usare il comando > summary(prt) 85Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  88. 88. Una Introduzione ad R: parte II > summary(prt) Index V1 Min. : 1 Min. : -1.0 1st Qu.:1462 1st Qu.: 109.2 Median :2922 Median : 156.4 Mean :2922 Mean : 188.8 3rd Qu.:4382 3rd Qu.: 235.9 Max. :5843 Max. :1447.7 summary ha alcuni “side effects” applicato sull’oggetto prt. Infatti produce anche le media e i quantili dell’indice (che non ha alcun significato) summary(coredata(prt)) la funzione coredata(prt) estrae, in effetti, dall’oggetto (zoo()) solo i dati “nudi”. 86Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  89. 89. Una Introduzione ad R: parte II Si può fare di meglio: > read.zoo(“1990-2005.txt”, col.names=”Portate”) -> prt da anche il nome corretto ai valori nella prima colonna > summary(coredata(prt)) Portate Min. : -1.0 1st Qu.: 109.2 Median : 156.4 Mean : 188.8 3rd Qu.: 235.9 Max. :1447.7 87Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  90. 90. Una Introduzione ad R: parte II Si notino un paio di cose: 1 - Il valore minimo della portata è -1. Fatto che significa che i dati non sono così corretti come si vorrebbe. Il dato -1, quasi sicuramente, è stato scritto per significare CHE QUEL GIORNO non sono presenti misure. In R tale informazione è marcata con il simbolo NA. 2 - Si vorrebbe che accanto ai dati, fossero presenti anche le date in cui tali misure sono state prese. 88Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  91. 91. Una Introduzione ad R: parte II= Risolviamo: 1 - Il valore minimo della portata è -1. Fatto che significa che i dati non sono così corretti come si vorrebbe. Il dato -1, quasi sicuramente, è stato scritto per significare CHE QUEL GIORNO non sono presenti misure. In R tale informazione è marcata con il simbolo NA. > which.min(coredata(prt)) [1] 3674 > prt[3674][[1]] <- NA > summary(coredata(prt)) Portate Min. : 34.44 1st Qu.: 109.20 Median : 156.40 Mean : 188.86 3rd Qu.: 235.92 Max. :1447.70 NAs : 1.00 89Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  92. 92. Una Introduzione ad R: parte II 2 - Si vorrebbe che accanto ai dati, fossero presenti anche le date in cui tali misure sono state prese. 1400 1200 1000 800 prt 600 400 200 0 0 1000 2000 3000 4000 5000 6000 Index 90Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  93. 93. Una Introduzione ad R: parte II 2 - Si vorrebbe che accanto ai dati, fossero presenti anche le date in cui tali misure sono state prese. Il comando > time(prt) consente di capire quale sia il tempo nella variabile prt. La risposta,in questo caso da una (lunga sequenza) di numeri interi. Significa che non è stata attribuita alcuna associazione tra prt e una variabile “tempo”. Infatti il file iniziale conteneva una sola colonna con i dati. SAPENDO che i dati si riferiscono al periodo compreso tra il 1 Gennaio 1990 e il 31 Dicembre 2005, si opera nel modo seguente: 91Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  94. 94. Una Introduzione ad R: parte II A - Si construisce una serie di dati di date: >seq(from=as.Date("1990-01-02"),to=as.Date("2005-12-31"),by="days") ->ymd B - Si assegna alla variabile “time” associata a “prt” il valore di ymd: > time(prt) <-ymd C - Se si disegna ora il grafico delle portate 92Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  95. 95. Una Introduzione ad R: parte II C - Se si disegna ora il grafico delle portate: >plot(prt,xlab="Anno",ylab="Portate m^3/s") 1400 1200 1000 Portate m^3/s 800 600 400 200 0 1990 1995 2000 2005 Anno 93Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  96. 96. Una Introduzione ad R: parte II Interpretiamo ora i comandi contenuti in: >seq(from=as.Date("1990-01-02"),to=as.Date("2005-12-31"),by="days") ->ymd - seq() genera una sequenza di dati. I suoi campi indicano rispettivamente: - from = .... il primo termine della sequenza - to = l’ultimo termine della serie di dati - by = lo “step”, ovvero l’intervallo che separa un dato dal successivo. 94Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  97. 97. Una Introduzione ad R: parte II Interpretiamo ora i comandi contenuti in: >seq(from=as.Date("1990-01-02"),to=as.Date("2005-12-31"),by="days") ->ymd - seq() genera una sequenza di dati. I suoi campi indicano rispettivamente: - from = .... il primo termine della sequenza - to = l’ultimo termine della serie di dati - by = lo “step”, ovvero l’intervallo che separa un dato dal successivo. NOTA: SI OSSERVI CHE QUESTO COMANDO E’ UNA DIMOSTRAZIONE DELLA STRUTTURA OBJECT ORIENTED (ORIENTATA AGLI OGGETTI) DEL LINGUAGGIO R. INIZIO, FINE DELLA SEQUENZA SONO INFATTI DICHIARATI COME OGGETTI “DATA” E, DI CONSEGUENZA ANCHE LO STEP E’ UNA UNITA’ DI TEMPO E LA SERIE RISULTANTE E’ UNA SERIE DI DATE. SE seq() fosse stata applicata a dei numeri, la sequanza generata sarebbe risultata una sequenza di numeri. 94Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  98. 98. Una Introduzione ad R: parte II Vogliamo ora disegnare i dati relativi ad un solo anno. R ha il comando window() che permette di selezionare una “finestra” temporale. > data.1990 <- window(prt,start=as.Date("1990-01-02"),end=as.Date("1990-12-01")) > plot(data.1990,xlab="Anno",ylab="Portate m^3/s") 400 300 Portate m^3/s 200 100 Jan Mar May Jul Sep Nov Anno 95Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  99. 99. Una Introduzione ad R: parte II Istogramma delle portate tra il 1990 e il 2005: Histogram of coredata(prt) 2500 2000 1500 Frequency 1000 500 0 0 500 1000 1500 coredata(prt) 96Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  100. 100. Una Introduzione ad R: parte II Istogramma delle portate tra il 1990 e il 2005: > hist(coredata(prt),breaks=20) Histogram of coredata(prt) 1500 1000 Frequency 500 0 0 500 1000 1500 coredata(prt) 97Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  101. 101. Una Introduzione ad R: parte II Istogramma delle portate tra il 1990 e il 2005: > hist(coredata(prt),breaks=80) Histogram of coredata(prt) 600 500 400 Frequency 300 200 100 0 0 200 400 600 800 1000 1200 1400 coredata(prt) 98Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  102. 102. Una Introduzione ad R: parte II BoxPlot delle portate tra il 1990 e il 2005 > as.factor(format(ymd,format="%Y"))->fyear >boxplot(coredata(prt)~fyear) 1400 1200 1000 800 600 400 200 0 1990 1992 1994 1996 1998 2000 2002 2004 99Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  103. 103. Una Introduzione ad R: parte II Un altro Caso: la lettura e l’analisi di dati provenienti dagli annali idrologici 100Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  104. 104. Una Introduzione ad R: parte IIQuello che ci proponiano è di leggere la tabella di dati contenuta nel file esterno"PluviometriaPaperopoli. txt"Assunto di avere istallato R e di averlo funzionante sul proprio computer, eseguiamoallora i comandi: 101Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  105. 105. Una Introduzione ad R: parte II #per vedere i files della directory in cui si sta lavorando list.files() 102Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  106. 106. Una Introduzione ad R: parte II Il comando per leggere il file è data = read.table("PluviometriaPaperopoli.txt",header=TRUE,skip=1) Nel caso in cui si voglia considerare -1 come un NA data = read.table("PluviometriaPaperopoli.txt",header=TRUE,skip=1,na.string s=-1) Per ottenere una completa spiegazione della sintassi del comando, si può usare: ?read.table() Il risultato è immagazzinato nella variabile "data". 103Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12
  107. 107. Una Introduzione ad R: parte II 104Riccardo Rigon, Matteo Dall’AmicoTuesday, March 6, 12

×