Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
III.5 Come analizzare i dati
Elisabetta Ronchieri
Università di Ferrara
Dipartimento di Economia e Management
Insegnamento di Informatica
Novembre 13, 2015
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Argomenti
1
Introduzione e concetti generali
2
Strutture dati
3
Nozioni base di programmazione
4
Grafici
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Cosa è R?
R è una suite integrata di strumenti software per la
manipolazione dei dati, il calcolo e la visualizzazione
grafica.
R presenta:
una gestione efficace dei dati;
un insieme di operatori per i calcoli su array, in particolare
matrici;
una grande raccolta di strumenti intermedi per l’analisi dei
dati;
servizi grafici per l’analisi e visualizzazione dei dati;
un linguaggio di programmazione semplice.
La maggior parte dei programmi scritti in R sono scritti allo
scopo di analizzare dati.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Cosa è R?
R è un software GNU (gratuito sotto licenza GPL).
È disponibile on line:
http://www.r-project.org
La principale repository di pacchetti è:
CRAN con circa 4500 pacchetti:
http://cran.r-project.org/
Ogni funzione e pacchetto è ampiamente documentato
con tutte le informazioni ed esempi che ne facilitano
l’utilizzo e l’apprendimento.
Tutto ciò che serve per apprendere R è disponibile online
gratuitamente (anche in italiano):
http://cran.r-project.org/manuals.html
Un IDE (Integrated Development Environment) per R:
http://www.rstudio.com/
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
I tipi di dati
R è un linguaggio orientato alla programmazione a oggetti.
Ogni variabile in R è detta oggetto.
Ogni oggetto ha una classe di appartenenza che ne
definisce le proprietà. tipo di dati contenuti nel vettore.
I tipi di dati in R sono in tutto 8:
logical;
numeric tra cui integer, double o real, e complex;
character;
raw;
function.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
I tipi di dati
Esistono 5 strutture dati che corrispondono a 5 classi di
dati:
1
2
3
4
5
vettori (classe vector);
matrici (classe matrix);
array (classe array);
liste (classe list);
data.frame (classe data.frame).
Esempi di funzioni per determinare la classe di un oggetto:
class()
is.list(), is.function(), is.logical()
Queste funzioni restituisco TRUE o FALSE in base
all’appartenenza o meno dell’argomento a quella
determinata classe.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Eseguire le istruzioni
Le varie istruzioni possono essere eseguite dalla linea di
comando della console caratterizzata dal prompt >.
Alla pressione del tasto INVIO il comando è eseguito.
Le istruzioni possono anche essere raggruppate in script,
ossia file di testo contenenti una lista di comandi, la cui
estensione è .R.
Per caricare uno script si usa la funzione source():
> source(’esempio.R’)
Si possono eseguire più operazioni in una stessa riga
separandole tramite un ;.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Eseguire le istruzioni
I pacchetti non inclusi nella distribuzione base possono
essere installati dal prompt di R tramite la funzione
install.packages()
> install.packages(’Quandl’)
Eventuali pacchetti installati nel sistema possono essere
caricati tramite la funzione library() o (indifferentemente)
require().
> library(’Quandl’)
I pacchetti disponibili sono da ricercare
http:
//cran.r-project.org/src/contrib/PACKAGES
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Operatori principali
Per assegnare valori ad un oggetto si può utilizzare
l’operatore di assegnazione ← (preferito) o =
> x <- 10
> x
[1] 10
In R non è necessario dichiarare le variabili.
Se al primo utilizzo una variabile non è presente nel
contesto corrente o in qualsiasi contesto che include quello
corrente è restituito un errore.
R è case-sensitive.
> x <- 10
> X
Error: object ’X’ not found
Nel momento in cui viene creato un oggetto che ha lo
stesso nome di un altro nel contesto corrente, quest’ultimo
sarà sovrascritto.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Caratteri speciali
Il nome delle variabili non deve avere caratteri speciali (es.
!, %).
Il punto è considerato un carattere normale.
Si possono creare variabili che contengono il punto: es.
number.of.elements.
Il carattere # è il simbolo del commento.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Parole riservate
FALSE, TRUE
Inf, NaN, NA, NULL
if, else, for, while, repeat, break, function, in, next
...
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Valori speciali
Se un oggetto possiede un valore ignoto sarà indicato con
NA.
Il risultato di una forma indeterminata (0/0 o Inf/0) avrà
come risultato NaN.
La funzione is.nan() restituisce TRUE solo se il suo
argomento è NaN.
La funzione is.na() restituisce TRUE se il suo argomento è
NA o NaN.
Molte funzioni, tramite il parametro opzionale na.rm,
consentono di escludere dalla computazione tutti i valori
NA o NaN.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Operatori principali
Operatori aritmetici
+ (somma);
- (sottrazione);
* (moltiplicazione);
/ (divisione);
∧ (potenza);
%/% (divisione intera tra due numeri);
%% (resto della divisione intera tra due numeri).
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Operatori principali
Operatori logici
& (AND logico)
| (OR logico)
! (NOT logico)
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Operatori principali
Operatori relazionali
== (uguale)
!= (diverso)
< (minore), > (maggiore), <= (minore uguale), >=
(maggiore uguale)
L’applicazione degli operatori relazionali ha come risultato
TRUE o FALSE.
Le espressioni logiche TRUE o FALSE corrispondono
rispettivamente a 1 o 0, quindi possono essere utilizzate
nelle operazioni aritmetiche.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Funzioni matematiche
sum(); prod(); sqrt(); exp(); log(); sin(); cos(); max(); min();
round(); sign(); ceiling(); floor();
mean(); median(); var(); sd(); cov();
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Workspace
Il workspace rappresenta il contenuto della memoria di
lavoro.
Per visualizzare gli oggetti definiti nel workspace si può
usare la funzione ls().
> ls()
[1] "dn"
[5] "mtcars"
[9] "some.plot"
[13] "x"
"environmental"
"pie.sales"
"temp.cut"
"y"
"f"
"pp"
"vps"
"Y"
"midpts"
"some.data"
"wind.cut"
"y1"
Tramite la funzione rm() è possibile rimuovere un oggetto.
> rm(’y1’)
> ls()
[1] "dn"
[5] "mtcars"
[9] "some.plot"
[13] "x"
"environmental"
"pie.sales"
"temp.cut"
"y"
Elisabetta Ronchieri
"f"
"pp"
"vps"
"Y"
III Dati e Informazione
"midpts"
"some.data"
"wind.cut"
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Workspace
Per visualizzare la directory del workspace si può usare la
funzione getwd().
> getwd()
[1] "E:/R-3.0.2/workdir"
Per cambiare la directory del workspace si può usare la
funzione setwd().
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Informazioni su funzioni
Per qualsiasi informazione su una funzione o sul suo
utilizzo è possibile accedere alla documentazione online:
http://cran.r-project.org/manuals.html
Oppure recuperare analoga informazione eseguendo una
delle seguenti operazioni che ridirezione la
documentazione su browser di sistema:
help(’ls’)
?ls
?ls()
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Introduzione
Nell’ambiente R esistono cinque principali strutture dati
predefinite:
1
2
3
4
5
vector
matrix
array
list
data.frame
I dati vector, matrix e array sono di tipo omogeneo, mentre
list e data.frame sono di tipo eterogeneo.
Le funzioni is.vector(), is.matrix(), is.array(), is.list() e
is.data.frame() ritornano TRUE se l’argomento è del tipo
specificato altrimenti FALSE.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Vettori
Un vettore si può definire come una sequenza ordinata di
oggetti dello stesso tipo (es. number, character, logical).
Il modo più comune per la costruzione di un vettore
prevede l’utilizzo della funzione c():
> x <- c(1,2,3,4,5,7)
> x
[1] 1 2 3 4 5 7
> x[2]
[1] 2
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Vettori
Per estrarre alcuni elmenti dal vettore x:
> x[c(1,2,4)]
[1] 1 2 4
> x[-c(1,2,4)]
[1] 3 5 7
Il segno - indica gli elementi che bisogna escludere
durante la selezione.
Qualsiasi tipologia di selezione (o qualunque tipo di
operazione) che si fa su un oggetto è essa stessa un
oggetto.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Vettori
Le operazioni sui vettori (cosi come sulle matrici e sugli
array) sono eseguite su ogni elemento dell’array:
> x[x>0]
[1] 1 2 3 4 5 7
> x[x>0] + c(2,1,2,1,2,1)
[1] 3 3 5 5 7 8
Le operazioni tra vettori devono essere lecite.
Nel caso di somma tra vettori di lunghezza diversa, il
risultato viene visualizzato fino al raggiungimento della
lunghezza più piccola.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Vettori
Funzioni alternative alla costruzione di un vettore.
> x <- vector(’numeric’, length=10)
> x
[1] 0 0 0 0 0 0 0 0 0 0
> rep(c(1,2), times=2) #ripeti 2 volte il vettore (1,2)
[1] 1 2 1 2
> seq(3,11,by=2)
[1] 3 5 7 9 11
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Vettori
La funzione range() restituisce il range dei valori contenuti
in un vettore.
La funzione length() restituisce la dimensione dell’oggetto
passato come parametro.
La funzione which() mostra la posizione degli elementi del
vettore che soddisfano una particolare condizione.
> x
[1] 1 2 3 4 5 7
> which(x>3)
[1] 4 5 6
La funzione sort() ordina gli elementi di un vettore.
La funzione order() restituisce la seguenza di indici
ordinata.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Matrici
Una matrice è una tabella ordinata di elementi dello stesso
tipo.
Le matrici sono considerate un’estensione dei vettori.
Ciascun elemento è univocamente localizzato tramite una
coppia di numeri interi: l’indice di riga e quello di colonna.
La funzione matrix() permette la creazione di una matrice:
> y<-matrix(1:10,ncol=5)
> y
[,1] [,2] [,3] [,4] [,5]
[1,]
1
3
5
7
9
[2,]
2
4
6
8
10
Gli elementi sono disposti dall’alto verso il basso e da
sinistra verso destra (disposizione per colonne), a meno di
non specificare il parametro byrow=TRUE.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Matrici
Per mostrare il contenuto della colonna 3:
> y[,3]
[1] 5 6
Per mostrare l’elemento nella seconda riga e terza
colonna:
> y[2,3]
[1] 6
Per selezionare la prima, quarta e quinta colonna:
> y[,-c(2,3)]
[,1] [,2] [,3]
[1,]
1
7
9
[2,]
2
8
10
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Matrici
Per convertire un oggetto vector in oggetto matrix si può
usare la funzione as.matrix().
Per il contrario vi è la funzione as.vector().
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Matrici
Funzioni alternative alla costruzione di una matrice.
> rbind(c(3,4),5:6,c(4,7))
[,1] [,2]
[1,]
3
4
[2,]
5
6
[3,]
4
7
> cbind(c(3,4),5:6,c(4,7))
[,1] [,2] [,3]
[1,]
3
5
4
[2,]
4
6
7
> diag(2:5)
[,1] [,2] [,3] [,4]
[1,]
2
0
0
0
[2,]
0
3
0
0
[3,]
0
0
4
0
[4,]
0
0
0
5
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Matrici
Modo alternativo alla costruzione di una matrice.
> m <- matrix(,nrow=4,ncol=3) # matrice vuota 4x3
> m[] <- 13:24
> m
[,1] [,2] [,3]
[1,]
13
17
21
[2,]
14
18
22
[3,]
15
19
23
[4,]
16
20
24
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Matrici
La funzione range() restituisce il range dei valori contenuti
nella matrice.
La funzione length() restituisce il numero di elementi
presenti nella matrice.
La funzione dim() restituisce la dimensione della matrice.
La funzione nrow() restituisce il numero di righe.
La funzione ncol() restituisce il numero di colonne.
La funzione appy() permette di applicare funzioni
matematiche su righe e colonne.
> m
[1,]
[2,]
[3,]
[4,]
[,1] [,2] [,3]
13
17
21
14
18
22
15
19
23
16
20
24
> apply(m,2,max) # 2 indica colonne
[1] 16 20 24
> apply(m,1,max) # 1 indica righe
[1] 21 22 23 24
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Matrici
La funzione t() calcola la trasposta della matrice.
La funzione solve() calcola la inversa della matrice.
> m
> mm <- diag(2,3)
> solve(mm)
[,1] [,2] [,3]
[1,] 0.5 0.0 0.0
[2,] 0.0 0.5 0.0
[3,] 0.0 0.0 0.5
> mm
[,1] [,2] [,3]
[1,]
2
0
0
[2,]
0
2
0
[3,]
0
0
2
[,1] [,2] [,3]
[1,]
13
17
21
[2,]
14
18
22
[3,]
15
19
23
[4,]
16
20
24
> t(m)
[,1] [,2] [,3] [,4]
[1,]
13
14
15
16
[2,]
17
18
19
20
[3,]
21
22
23
24
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Matrici
Il prodotto matriciale riga per colonna si effettua attraverso
l’operatore %*%
Il prodotto elemento per elemento si effettua con
l’operatore *
L’operatore %in% permette di vedere se un’occorrenza dei
valori dell’operando di sinistra si trova nei valori
dell’operando di destra.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Array
Gli array costituiscono un’estensione delle matrici.
Un elemento di un array è rappresentato da un vettore di
indici.
Per costruire un array è utilizzata la funzione array():
>
>
>
>
>
# 1 parametro contiene gli elementi
# 2 parametro le dimensioni:
# 4 numero di righe, 2 numero di colonne, 3 numero di matrici
a <- array(24:49,dim=c(4,2,3))
a[,,1]
[,1] [,2]
[1,]
24
28
[2,]
25
29
[3,]
26
30
[4,]
27
31
> a[2,,]
[,1] [,2] [,3]
[1,]
25
33
41
[2,]
29
37
45
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Liste
Una lista in R si può definire come una raccolta di oggetti
(anche di tipi diversi), comprese altre liste.
È un tipo ricorsivo.
Per creare una lista si utilizza la funzione list().
> l<- list(c(1,2,3),matrix(2:9,nrow=4),c(’p’,’c’))
> l
[[1]]
[1] 1 2 3
[[2]]
[,1] [,2]
[1,]
2
6
[2,]
3
7
[3,]
4
8
[4,]
5
9
[[3]]
[1] "p" "c"
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Liste
Le componenti della lista vengono individuate attraverso le
singole parentesi [ ].
L’oggetto estratto sarà esso stesso una lista.
Per rimuovere dall’oggetto la struttura lista usare:
la funzione unlist();
o direttamente l’operatore [[ ]].
> l<- list(c(1,2,3),matrix(2:9,nrow=4),c(’p’,’c’))
> length(l)
> l[[3]][1]
[1] "p"
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Liste
È possibile assegnare nomi ad ogni singolo oggetto
incluso nella lista durante la sua creazione
> l <- list(a=c(1,2,3),...)).
Un altro modo per nominare o rinominare una lista è quello
di utilizzare la funzione names()
La funzione names() restituisce NULL nel momento in cui
la lista viene creata senza nomi.
Una volta rinominati gli oggetti della lista, si possono
estrarre chiamandoli per nome.
Esistono due modi per farlo:
1
tramite il simbolo $
> l$a
2
che restituisce un vettore
con l’uso delle parentesi quadre
> l[’a’]
che restituisce una lista
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Indicizzazione
Gli elementi in un vettore, matrice, o array possono essere
indicizzati sia numericamente che tramite nomi.
Per assegnare nomi si possono usare le funzioni names()
per i vettori, rownames() e colnames() per le matrici,
dimnames() per gli altri oggetti.
La funzione unname() rimuove tutti i nomi assegnati ad un
oggetto
È possibile usare il parametro dimnames dei costruttori
matrix e array per assegnare direttamente i nomi.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Indicizzazione
> v <- 1:4
> names(v) <- c(’a’,’b’,’c’,’d’)
> v
a b c d
1 2 3 4
> v[’a’]
a
1
> unname(v)
[1] 1 2 3 4
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Indicizzazione
>
>
>
>
a
b
c
>
a
2
>
W
1
m <- matrix(1:6, nrow=3, ncol=2, byrow=TRUE)
rownames(m) <- c(’a’,’b’,’c’)
colnames(m) <- c(’W’,’Z’)
m
W Z
1 2
3 4
5 6
m[,’Z’]
b c
4 6
m[’a’,]
Z
2
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Data frame
Il dataframe è simile ad un matrice.
È usato per raffigurare dati di diversa entità.
Ogni riga corrisponde ad un osservazione, mentre ogni
colonna è una variabile.
È trattato come un lista.
Ogni elemento di tale lista rappresenta una variabile
statistica.
La funzione length() restiuisce il numero di variabili.
La funzione names() restituisce i relativi nomi.
Per le osservazioni si utilizza row.names().
Per conoscere la dimensione dell’intero data frame basta
utilizzare la funzione dim().
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Data frame
Un data frame può essere creato utilizzando la funzione
data.frame().
Nei parametri della funzione data.frame() può essere
specificato il nome di ogni singola riga del data frame
(row.names) e il nome delle singole osservazioni.
Si può assegnare o visualizzare i nomi delle componenti di
un data frame:
la funzione names() estrae le variabili
la funzione row.names() estrae le osservazioni
Per cancellare una variabile è sufficiente settarla a NULL.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Data frame
> df <- data.frame(Temp=c(-10,30,10),
+ DeltaT=c(’Freddo’,’Caldo’,’Freddo’))
> df
Temp DeltaT
1 -10 Freddo
2
30
Caldo
3
10 Freddo
> dim(df)
[1] 3 2
> length(df)
[1] 2
> df$Mese<-c(’Dicembre’,’Agosto’,’Ottobre’)
> df
Temp DeltaT
Mese
1 -10 Freddo
Dicembre
2
30
Caldo
Agosto
3
10 Freddo
Ottobre
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Data frame
> names(df)
[1] "Temp"
"DeltaT" "Mese"
> row.names(df)
[1] "1" "2" "3"
> row.names(df) <- c(’oss1’, ’oss2’,’oss3’)
> df
Temp DeltaT
Mese
oss1 -10 Freddo
Dicembre
oss2
30
Caldo
Agosto
oss3
10 Freddo
Ottobre
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Data frame
Modi per selezionare dal data frame una variabile o una
osservazione.
> df$DeltaT
[1] Freddo Caldo Freddo
Levels: Caldo Freddo
> df[2,3]
[1] "Agosto"
> df[2,2]
[1] Caldo
Levels: Caldo Freddo
> df[,2]
[1] Freddo Caldo Freddo
Levels: Caldo Freddo
> df$Mese
[1] "Dicembre"
"Agosto"
Elisabetta Ronchieri
"Ottobre"
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Data frame
Modi per selezionare dal data frame una variabile o una
osservazione.
> df[df$DeltaT==’Freddo’,’Mese’]
[1] "Dicembre"
"Ottobre"
> df$DeltaT[df$Temp<=10]
[1] Freddo Freddo
Levels: Caldo Freddo
> df$DeltaT[df$Temp>10]
[1] Caldo
Levels: Caldo Freddo
> df$Mese <- NULL
> df
Temp DeltaT
oss1 -10 Freddo
oss2
30
Caldo
oss3
10 Freddo
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Introduzione
Le istruzioni devono essere scritte secondo l’ordine in cui
verranno eseguite
Ogni istruzione deve essere separata dalla successiva.
Si può fare in due modi:
usando il ;
andando a capo
Attraverso parentesi graffe è possibile isolare blocchi di
istruzioni.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
IF-THEN-ELSE
La struttura del costrutto if-then-else è
if (espressione-logica) istruzione-a o blocco-a
else istruzione-b o blocco-b
È possibile avere if annidati
if (espressione-logica-a) istruzione-a o blocco-a
else if (espressione-logica-b) istruzione-b o blocco-b
else istruzione-c o blocco-c
Esempi di espressione-logica
!is.numeric(x)
(x == 5)
Esempi del costrutto
if (!is.numeric(x)) {
print(’x non numerico’)
}
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Ciclo FOR
La struttura del costrutto for è
for (nome.variabile in vector) istruzione o blocco
Il seguente comando genera un vettore con un numero di
elementi compresi tra from e to distanziati da by
seq(from=1, to=10, by=2)
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Cicli WHILE e REPEAT
La struttura del costrutto while è
while (espression-logica) istruzione o blocco
La struttura del costrutto repeat è
repeat blocco di istruzioni
s <- 0
p <- 1
t <- 1
repeat {
s <- s +
p <- p *
t <- t +
if (t ==
}
t
t
1
10) break()
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Funzioni
Le funzioni contengono argomenti in entrata e in uscita.
Permettono di utilizzare variabili interne che non
interagiscono con le variabili del workspace.
Struttura generale di una funzione:
nuova.funzione <- function(argomenti)
{
uscita
}
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Funzioni
Per definire un argomento opzionale basta indicare dopo il
nome il valore predefinito che dovrà assumere se non
specificato diversamente.
Uno speciale tipo di argomento è ..., che permette di
specificare un elenco non definito di argomenti che potrà
essere passato ad altre funzioni richiamate nel corpo del
metodo.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Funzioni
L’ultima espressione valutata all’interno della funzione
costituisce anche il suo output.
All’interno di una funzione si possono richiamare altre
funzioni definite dall’utente purchè siano state definite
prima della chiamata.
È anche possibile definire funzioni ricorsive.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Funzioni principali per i grafici
Le funzioni principali per la rappresentazione grafica sono
plot(), points() e lines().
> x<-seq(0,10,0.5)
> x
[1] 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5
[11] 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5
[21] 10.0
> plot(x,sin(x),type=’b’,col=2,pch="*",ylab=’f(x)’,
+ xlab=’tempo’,ylim=c(-1,1))
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Funzione plot()
> plot(x,sin(x),type=’b’,col=2,pch="*",ylab=’f(x)’,
+ xlab=’tempo’,ylim=c(-1,1))
Esaminiamo alcuni parametri della funzione legend():
Il parametro type specifica la tipologia del grafico: b sta per
both, l per lines e p per points (valore di default).
Il parametro col specifica il colore: 1 indica il nero (valore di
default).
Il parametro pch indica il tipo di punto (valore di default o).
I parametri ylab e xlab permettono di specificare delle
etichette.
Il parametro ylim permette di cambiare il range degli assi.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Specificare la legenda
La funzione legend() permette di inserire nel grafico una
legenda.
Questo permette di facilitare la comprensione del grafico.
>
>
+
>
>
>
x<-seq(0,10,0.5)
plot(x,sin(x),type=’b’,col=2,pch="*",ylab=’f(x)’,
xlab=’tempo’,ylim=c(-1,1))
...
legend(0,-0.7, ’sin’,col=2,lty=1,pch=’*’,bty=’n’)
legend(0,-0.5, ’cos’,col=4,lty=1,pch=’o’,bty=’n’)
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Funzione legend()
> legend(0,-0.5, ’cos’,col=4,lty=1,pch=’o’,bty=’n’)
Esaminiamo alcuni parametri della funzione legend():
I primi due parametri specificano le cordinate della legenda
sugli assi x e y.
Il terzo parametro indica la etichetta.
Il parametro col specifica il colore.
Il parametro lty specifica il tipo di punto.
Il paraetro bty specifica un box attorno alla legenda: n sta
per no.
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Creare dot plot
È possibile creare Dot Plot con la funzione dotchart()
La sintassi del comando è:
dotchart(x, labels = NULL, groups = NULL, gcolor = NULL)
x è un vettore numerico
labels è un vettore di etichette per ogni punto
groups è un vettore che specifica come gli elementi di x
sono raggruppati
gcolor controlla i colori da assegnare ad ogni etichetta
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Funzione dotchart()
> class(mtcars)
[1] "data.frame"
> names(mtcars)
[1] "mpg" "cyl" "disp" "hp"
"drat" "wt"
"qsec" "vs"
[9] "am"
"gear" "carb"
> str(mtcars)
’data.frame’: 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
> x<- mtcars[order(mtcars$mpg),]
> x$cyl <- factor(x$cyl)
> str(x)
’data.frame’: 32 obs. of 11 variables:
$ mpg : num 10.4 10.4 13.3 14.3 14.7 15 15.2 15.2 15.5 15.8 ...
$ cyl : Factor w/ 3 levels "4","6","8": 3 3 3 3 3 3 3 3 3 3 ...
...
$ gear: num 3 3 3 3 3 5 3 3 3 5 ...
$ carb: num 4 4 4 4 4 8 3 2 2 4 ...
> x$color[x$carb==4] <- ’red’
> x$color[x$carb==6] <- ’blue’
> x$color[x$carb==8] <- ’green’
> x$color[x$carb==2] <- ’black’
> x$color[x$carb==1] <- ’gray’
> dotchart(x$mpg, labels=row.names(x), cex=.7, groups=x$cyl,
+ main=’Consumo di Gas per Modelli di Macchina\n raggruppati per cilindrata’,
+ xlab=’Miglie per galloni’, gcolor=’black’, color=x$color)
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Funzione dotchart()
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Creare grafici a barre
È possibile creare grafici a barre con la funzione barplot()
La sintassi del comando è:
barplot(height, names.arg = NULL, horiz = FALSE, xlab = NULL, ylab = NULL, ...)
height è un vettore o matrice che descrive le barre del
grafico
names.arg è un vettore di nomi da mostrare per ogni barra
names.arg è un booleano che indica l’orientamento del
grafico
xlab, ylab sono le etichette da mostrare sull’asse x o y
rispettivamente
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Funzione barplot()
> elementi <- table(mtcars$gear)
> str(elementi)
’table’ int [1:3(1d)] 15 12 5
- attr(*, "dimnames")=List of 1
..$ : chr [1:3] "3gears" "4gears" "5gears"
> elementi
3gears 4gears 5gears
15
12
5
> barplot(elementi,
+ main=’Distribuzione delle macchine’,
+ names.arg=c(’3gears’,’4gears’,’5gears’),
+ xlab=’numero di gears’)
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Creare grafici a torta
È possibile creare grafici a barre con la funzione pie()
La sintassi del comando è:
pie(slices, labels = NULL, main = NULL, ...)
slices è un vettore che descrive le porzioni del grafico
labels è un vettore di nomi per ogni porzione del grafico
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
Funzione pie()
>
>
+
>
pil <- c(10,12,16,20)
nazioni <- c(’Italia’, ’Spagna’,
’Francia’,’Germania’)
pie(pil, nazioni, main=’Pil di varie nazioni’)
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
References
John M. Chambers, Software for data analysis:
Programming with R (Statistics and Computing, Springer
(2008), http://www.e-reading.me/bookreader.
php/137398/Chambers_-_Software_for_Data_
Analysis_-_Programming_with_R.pdf
W. N. Venables, D. M. Smith and the R Core Team, An
Introduction to R, July 2014, http://cran.r-project.
org/doc/manuals/R-intro.pdf
Vito M. R. Muggeo, Giancarlo Ferrara, Il Linguaggio R:
concetti introduttivi ed esempi, 2005, http://cran.
r-project.org/doc/contrib/nozioniR.pdf
Elisabetta Ronchieri
III Dati e Informazione
Introduzione e concetti generali
Strutture dati
Nozioni base di programmazione
Grafici
References
Josef Eschgfaller, Programmare in R, 2005,
http://cran.r-project.org/doc/contrib/
Fondamenti-0405.pdf
Brian S. Everitt, Torsten Hothorn, A Handbook of Statistical
Analyses Using R,
http://cran.r-project.org/web/packages/
HSAUR/vignettes/Ch_introduction_to_R.pdf
Claudio Agostinelli, Introduzione a R, https://cran.
r-project.org/doc/contrib/manuale.0.3.pdf
Elisabetta Ronchieri
III Dati e Informazione