Sei sulla pagina 1di 44

STATISTICA E

ANALISI DEI DATI


Capitolo 1 – Dagli array agli script

Dott. Stefano Cirillo


Dott. Luigi Di Biasi

a.a. 2023-2024
L’AMBIENTE INTEGRATO R
Array
In R gli array sono oggetti che mantengono al loro interno
un insieme indicizzato di elementi tutti dello stesso tipo

Classi di array
 character
R fornisce ben tre metodi per «scoprire» il  numeric
tipo di dato contenuto in un array:  integer
 logical
• class()
 complex
• typeof()
• mode()

2
L’AMBIENTE INTEGRATO R
Tipi di dati in un Array
R fornisce ben tre metodi per «scoprire» il tipo di dato
contenuto in un array.
 character
• class restituisce il tipo di dati contenuto in un array «dal  numeric
punto di vista di R»  integer
 logical
 complex
• typeof restituisce il tipo di dati contenuto in un array
«dal punto di vista OOP»

3
L’AMBIENTE INTEGRATO R
Array vs Vettori
• Nella pratica array e vettori possono risultare molto simili, tant’è che
molto spesso gli array vengono indicati come “vector structure”
• Semplicemente un array apre alla possibilità di specificare un ulteriore
parametro che ne definisce la dimensione.
• In particolare, in un array tridimensionale a, a[i, j, k] è l’elemento nella
posizione (i, j, k) dell’array. In particolare, un array tridimensionale a di
dimensione n × m × r è visto come una sovrapposizione di r array
bidimensionali di dimensione n × m.

4
L’AMBIENTE INTEGRATO R
Dagli array alle matrici
• Gli array sono utili quando è necessario fornire differenti informazioni per identificare
un elemento.
• Un esempio tipico di array contiene le temperature minime e massime, il giorno, il
mese e l’anno di registrazione in diverse città (con tutti i valori espressi da numeri).
• Una matrice è un array bidimensionale di elementi univocamente determinati da una
coppia di numeri interi, che costituiscono l’indice di riga e di colonna.
• Un array bidimensionale può essere inizializzato nel seguente modo:

oppure equivalentemente

6
CEntrambe le righe di codice R che hai fornito riguardano la creazione di strutture dati
bidimensionali, ma ci sono alcune differenze chiave tra un array e una matrice in R. Vediamo cosa fa
ogni riga:

1. Array: a <- array(1:h, dim = c(n,m))

- a <-: Assegna il valore dell'espressione sulla destra alla variabile a.

- array(1:h, dim = c(n,m)): Crea un array.

- 1:h: Crea un vettore di numeri interi che inizia da 1 e finisce a h. Ad esempio, se h fosse 10,
1:h sarebbe 1, 2, ..., 10.

- dim = c(n,m): Definisce le dimensioni dell'array. In questo caso, l'array ha n righe e m


colonne. Tuttavia, una differenza chiave tra un array e una matrice in R è che un array può avere più
di due dimensioni, mentre una matrice è sempre bidimensionale.

2. Matrice: a <- matrix(1:h, nrow=n, ncol=m)

- a <-: Come prima, assegna il valore dell'espressione sulla destra alla variabile a.

- matrix(1:h, nrow=n, ncol=m): Crea una matrice.

- 1:h: Come spiegato in precedenza, crea un vettore di numeri interi.

- nrow=n: Specifica il numero di righe della matrice come n.

- ncol=m: Specifica il numero di colonne della matrice come m.

La principale differenza tra le due righe di codice è la funzione utilizzata (array vs matrix) e la forma
in cui vengono specificate le dimensioni. Tuttavia, nel contesto dato, poiché stiamo lavorando con
strutture bidimensionali, l'output di entrambi i codici sarà molto simile.

Un esempio con h=6, n=2, e m=3 produrrà:

[,1] [,2] [,3]


[1,] 1 3 5
[2,] 2 4 6

Sia per l'array che per la matrice. Ma, ricorda, la vera potenza degli array in R si vede quando si
lavora con più di due dimensioni!
L’AMBIENTE INTEGRATO R
Riempire le matrici
• Come si può osservare dai due esempi precedenti, R utilizzando i comandi array() e
matrix() riempie le matrici per colonna.
• Se si desidera forzare R a riempire la matrice per riga si deve specificare l’opzione
byrow = TRUE come ultimo argomento di matrix().

7
L’AMBIENTE INTEGRATO R
Riempire le matrici
• Se si vuole costruire una matrice n × m con tutti elementi nulli si può utilizzare il
comando matrix() nel seguente modo:

• Se si desidera accedere all’elemento (i, j) della matrice a occorre utilizzare a[i, j],
mentre con a[ , j] si selezionano gli elementi della colonna j-esima e infine con a[i, ] si
selezionano gli elementi della riga i-esima. 9
L’AMBIENTE INTEGRATO R
Riempire le matrici
• Le funzioni cbind() e rbind() permettono di creare opportune matrici componendo
vettori di uguale lunghezza e matrici delle stesse dimensioni.
• La prima funzione usa i vettori per creare le colonne mentre la seconda per creare le
righe.

10
La riga di codice R che hai fornito utilizza la funzione cbind per combinare diversi vettori e/o matrici
in una singola matrice orizzontalmente (cioè, per colonne). Ecco cosa fa ogni componente:

1. a <-: Questo sta assegnando il valore dell'espressione sulla destra alla variabile a.

2. cbind(...): Questa funzione combina gli argomenti passati in una matrice, legandoli per colonne.

- c(1,2,3): Questo è un vettore che contiene i numeri 1, 2 e 3.

- 4:6: Questo è un modo conciso in R per creare un vettore con i numeri da 4 a 6, cioè 4, 5, 6.

- matrix(7:12,nrow=3,ncol=2): Questa è una matrice 3x2 (3 righe e 2 colonne) creata a partire dal
vettore 7:12, che contiene i numeri da 7 a 12. La matrice appare così:

[,1] [,2]
[1,] 7 10
[2,] 8 11
[3,] 9 12

Mettenendo tutto insieme, cbind combina il vettore c(1,2,3), il vettore 4:6, e la matrice 7:12 in una
singola matrice. Il risultato sarà:

[,1] [,2] [,3] [,4]


[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12

In pratica, hai esteso la matrice orizzontalmente aggiungendo colonne da diversi vettori e matrici.

Vediamo cosa fa ogni componente:

1. `a <-`: Questo sta assegnando il risultato dell'espressione sulla destra alla variabile a.

2. `rbind(...)`: La funzione rbind (row bind) viene utilizzata per combinare vettori o matrici
verticalmente, cioè aggiungendo nuove righe.

- `c(1,2,3)`: Questo crea un vettore con i numeri 1, 2, e 3.

- `4:6`: Questo è un modo conciso in R per creare un vettore con i numeri da 4 a 6. Quindi, questo
produce il vettore 4, 5, 6.

- `matrix(7:12,nrow=2,ncol=3, byrow=true)`: Questa espressione crea una matrice 2x3 (2 righe e 3


colonne) a partire dal vettore 7:12. L'argomento byrow=true indica che la matrice dovrebbe essere
popolata per righe. Quindi, la matrice appare così:
[,1] [,2] [,3]
[1,] 7 8 9
[2,] 10 11 12

Unendo tutto con rbind, otterrai una matrice con tre righe e tre colonne:

[,1] [,2] [,3]


[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12

Tuttavia, c'è un problema: ci sono quattro righe in totale (2 righe dalla matrice e 2 vettori), ma solo
tre colonne. In questo caso, R restituirebbe un errore poiché il numero di elementi nelle righe non
combacia. La correzione richiederebbe di assicurarsi che tutti gli argomenti passati a rbind abbiano
la stessa lunghezza o numero di colonne.
L’AMBIENTE INTEGRATO R
Riempire le matrici
• Altre funzioni molto utilizzate nell’algebra matriciale sono:

- diag(v), con v vettore, usata per creare una matrice diagonale con
gli elementi del vettore sulla diagonale e i restanti elementi nulli;

- diag(a), con a matrice, fornisce un vettore costituito dagli elementi


della diagonale principale della matrice;

- diag(n), con n intero, fornisce la matrice identità n × n.

11
L’AMBIENTE INTEGRATO R
Riempire le matrici

• È possibile cambiare i nomi assegnati alle intestazioni delle righe e delle colonne di
una matrice a utilizzando i comandi rownames(a) e colnames(a). Come mostrato nel
seguente esempio:

15
L’AMBIENTE INTEGRATO R
Operazioni matriciali
• R permette di eseguire le usuali operazioni sui vettori e le matrici.
• R interpreta i suoi vettori come vettori colonna.
• Per effettuare la trasposizione di un vettore o di una matrice occorre utilizzare
l’operatore t() di trasposizione. Nell’esempio seguente, creiamo una matrice 2 × 2 e
calcoliamo la sua trasposta.

• Sui vettori e sulle matrici delle stesse dimensioni sono applicabili le usuali operazioni
aritmetiche +, −, ∗, : che agiscono elemento per elemento.
• Occorre osservare che in tal caso il prodotto di matrici utilizzando l’operatore ∗ non
16
corrisponde al prodotto matriciale.
L’AMBIENTE INTEGRATO R
Il prodotto matriciale
• R fornisce la possibilità di effettuare il prodotto matriciale tra due matrici a di
dimensione n × m e b di dimensione m × r utilizzando l’operatore %∗%.

17
Certamente! Vediamo in dettaglio cosa sta succedendo in questo codice:

1. Creazione della matrice `a`:

R
a <- matrix(c(1,2,3,4,5,6), nrow=2, ncol=3)

Qui, stai creando una matrice di dimensione 2x3 (nrow=2, ncol=3) usando i valori da 1 a 6. La
matrice a viene popolata per colonne (questo è il comportamento predefinito di matrix), risultando
in:

[ ,1] [ ,2] [ ,3]


[1 ,] 1 3 5
[2 ,] 2 4 6

2. Creazione della matrice `b`:

R
b <- matrix(1:12, nrow=3, ncol=4)

Qui, stai creando una matrice di dimensione 3x4 usando i valori da 1 a 12. La matrice b appare
così:

[ ,1] [ ,2] [ ,3] [ ,4]


[1 ,] 1 4 7 10
[2 ,] 2 5 8 11
[3 ,] 3 6 9 12

3. Moltiplicazione di matrici:

R
c <- a %*% b

Questo è un prodotto matriciale. Per moltiplicare due matrici, il numero di colonne della prima
matrice (a) deve essere uguale al numero di righe della seconda matrice (b). Qui, a ha 3 colonne e b
ha 3 righe, quindi la moltiplicazione è valida.

La matrice risultante c ha dimensione 2x4 (numero di righe di a per numero di colonne di b). Il
risultato della moltiplicazione è:
[ ,1] [ ,2] [ ,3] [ ,4]
[1 ,] 22 49 76 103
[2 ,] 28 64 100 136

In sostanza, hai creato due matrici, a e b, e poi hai calcolato il loro prodotto matriciale per ottenere
una nuova matrice, c. Il prodotto matriciale non è semplicemente una moltiplicazione elemento per
elemento, ma coinvolge una serie di prodotti e somme tra le righe della prima matrice e le colonne
della seconda.
L’AMBIENTE INTEGRATO R
Determinante di una matrice
• È possibile calcolare il determinante di una matrice quadrata a con il comando det(a),
mentre per calcolare l’inversa di una matrice a quadrata non singolare (ossia con
determinante diverso da zero) si usa il comando solve(a). Un esempio è il seguente:

18
Certamente! Vediamo cosa sta succedendo passo dopo passo:

1. Creazione della matrice `a`:

R
a <- matrix(c(1,2,1,1,1,3,1,1,2), nrow=3, ncol=3)

Questa riga crea una matrice 3x3 con i valori specificati. a appare così:

[ ,1] [ ,2] [ ,3]


[1 ,] 1 1 1
[2 ,] 2 1 1
[3 ,] 1 3 2

2. Calcolo del determinante:

R
det(a)

La funzione det calcola il determinante di una matrice. Il determinante è un valore scalare che
fornisce informazioni importanti sulla matrice, come ad esempio se ha un'inversa (se il determinante
è diverso da zero, la matrice è invertibile). Qui, il determinante di a è 1.

3. Calcolo della matrice inversa:

R
b <- solve(a)

La funzione solve, quando usata con una singola matrice come argomento, restituisce la matrice
inversa. La matrice inversa di a, indicata come b, appare così:

[ ,1] [ ,2] [ ,3]


[1 ,] -1 1 0
[2 ,] -3 1 1
[3 ,] 5 -2 -1

4. Moltiplicazione delle matrici `a` e `b`:

R
c <- a %*% b

Il prodotto matriciale tra una matrice e la sua inversa dovrebbe produrre la matrice identità.
5. Visualizzazione della matrice risultante:

R
round(c, digits=2)

Qui, si sta arrotondando ogni elemento della matrice risultante a 2 cifre decimali, che in pratica
serve a visualizzare la matrice identità (a causa di piccoli errori di arrotondamento dovuti al calcolo
numerico). La matrice risultante è, infatti, la matrice identità:

[ ,1] [ ,2] [ ,3]


[1 ,] 1 0 0
[2 ,] 0 1 0
[3 ,] 0 0 1

In sintesi, il codice dimostra che la matrice b è effettivamente l'inversa della matrice a, poiché il loro
prodotto matriciale è la matrice identità.
L’AMBIENTE INTEGRATO R
Autovalori e autovettori
• R consente anche di determinare gli autovalori e gli autovettori di una matrice
quadrata A di ordine n.
• Occorre determinare una costante λ tale che A x = λ x, dove x individua un vettore
colonna di lunghezza n. Ciò equivale a richiedere che (A−λ I)x = 0, dove I è la matrice
identità.
• La soluzione non banale del problema corrisponde a richiedere che det(A − λ I) = 0, il
che corrisponde a risolvere un’equazione algebrica di grado n in λ, detta equazione
caratteristica.
• Ognuna delle radici λ1, λ2, . . . , λn è chiamata autovalore e il corrispondente vettore
soluzione xi (i = 1, 2, . . . , n) è chiamato autovettore corrispondente all’autovalore λi
della matrice A.

19
L’AMBIENTE INTEGRATO R
Autovalori e autovettori

• In R la funzione eigen(a) calcola gli autovalori e gli autovettori di una


matrice a.
• Il risultato è una lista di due componenti:
- un vettore di nome values contenente gli autovalori
- una matrice di nome vectors che contiene i corrispondenti
autovettori sulle sue colonne.
• Questi due componenti possono essere usati in istruzioni di
assegnazione utilizzando eigen(a)$values e eigen(a)$vectors,
rispettivamente. Ad esempio…

20
### Autovalori e Autovettori

Gli autovalori e autovettori sono concetti fondamentali dell'algebra lineare e hanno molte
applicazioni in vari campi come la fisica, l'ingegneria, le scienze dei dati e molti altri.

- Autovalore: Un numero (lambda) è detto autovalore di una matrice (A) se esiste un vettore (non
nullo) (v), chiamato autovettore, tale che la moltiplicazione della matrice (A) per (v) risulti in un vettore
che è una semplice scala di (v). In termini matematici, questo si esprime come:

[ A cdot v = lambda cdot v ]

- Autovettore: Come detto, un vettore (v) è un autovettore associato a un autovalore (lambda) di una
matrice (A) se soddisfa la relazione sopra indicata.

La determinazione degli autovalori e degli autovettori di una matrice è un problema fondamentale in


algebra lineare. Hanno molte proprietà e applicazioni, come nella diagnolizzazione di matrici, nella
teoria delle equazioni differenziali, nella decomposizione di valori singoli, tra gli altri.

### Analisi del tuo codice:

1. Creazione della matrice `a`:

R
a <- matrix(1:4, nrow=2, ncol=2)

Qui, stai creando una matrice 2x2 con i numeri da 1 a 4. La matrice a appare così:

[ ,1] [ ,2]
[1 ,] 1 3
[2 ,] 2 4

2. Calcolo degli autovalori e autovettori:

R
eigen(a)

La funzione eigen in R calcola gli autovalori e gli autovettori di una matrice. Il risultato fornito dalla
funzione è una lista con due componenti:

- $values: Gli autovalori della matrice.


- $vectors: Gli autovettori della matrice, dove ogni colonna rappresenta un autovettore.

Dai risultati:

- Gli autovalori sono:


R
[1] 5.3722813 -0.3722813

- Gli autovettori sono:

R
[ ,1] [ ,2]
[1 ,] -0.5657675 -0.9093767
[2 ,] -0.8245648 0.4159736

Dove la prima colonna della matrice degli autovettori è l'autovettore associato al primo autovalore e
la seconda colonna è l'autovettore associato al secondo autovalore.

In pratica, ciò significa che se moltiplichiamo la matrice a per il primo autovettore, otterremo un
vettore che è semplicemente (5.3722813) volte il primo autovettore. Analogamente, se
moltiplichiamo a per il secondo autovettore, otterremo un vettore che è (-0.3722813) volte il
secondo autovettore.
### Creazione della lista lst

R
lst <- list(c("X1", "X2"), c(0,0), matrix(1:6, nrow=2, ncol=3))

In questa riga, stai creando una lista in R. Una lista è una struttura dati che può contenere oggetti di
qualsiasi tipo, inclusi numeri, stringhe, vettori, altre liste, matrici, data frames, ecc. La lista lst ha tre
componenti:

1. c("X1", "X2"): Questo è un vettore di caratteri con due elementi: "X1" e "X2".
2. c(0,0): Questo è un vettore numerico con due elementi: 0 e 0.
3. matrix(1:6, nrow=2, ncol=3): Questa è una matrice 2x3 creata dai numeri da 1 a 6.

### Visualizzazione della lista lst

Quando visualizzi la lista con lst, vedrai le tre componenti della lista:

R
[[1]]
[1] "X1" "X2"

[[2]]
[1] 0 0

[[3]]
[ ,1] [ ,2] [ ,3]
[1 ,] 1 3 5
[2 ,] 2 4 6

Ogni componente è rappresentata con doppie parentesi quadre ([[...]]).

### Calcolo della lunghezza della lista lst

R
length(lst)

La funzione length restituisce il numero di componenti nella lista. Dal momento che la lista lst ha tre
componenti, la risposta è 3.

### Spiegazione

- Una lista in R è una raccolta ordinata di oggetti, che possono essere di tipo diverso.

- La lista lst che hai creato contiene tre componenti: un vettore di stringhe, un vettore di numeri e
una matrice.

- La funzione length ti dice quante componenti ci sono nella lista, ma non ti dice quanti elementi ci
sono in ogni componente. In questo caso, ci sono 3 componenti nella lista lst.
L’AMBIENTE INTEGRATO R
Liste
• A differenza dei vettori, degli array e delle matrici, in R una lista è un oggetto che
consiste in una raccolta di altri oggetti, che possono essere anche differenti tra loro,
detti componenti della lista.
• Ad esempio, i risultati creati dalla funzione eigen() si presentano come una lista
costituita da un oggetto (primo componente) di tipo vettore, che contiene gli
autovalori, e un oggetto (secondo componente) di tipo matrice, che contiene i
corrispondenti autovettori.

21
Ok, esaminiamo ogni passaggio di questo codice:

1. Creazione della lista `lst` con nomi delle componenti:

R
lst <- list(n1 = c("X1", "X2"), n2 = c(0,0), n3 = matrix(1:6, nrow=2, ncol=3))

Qui, stai creando una lista in cui ogni componente ha un nome associato. Questi nomi (n1, n2 e
n3) possono essere utilizzati per accedere alle componenti della lista.

2. Visualizzazione della lista `lst`:

La struttura della lista, compresi i nomi delle sue componenti, viene mostrata:

R
$n1
[1] "X1" "X2"

$n2
[1] 0 0

$n3
[ ,1] [ ,2] [ ,3]
[1 ,] 1 3 5
[2 ,] 2 4 6

3. Accedere al secondo componente usando singole parentesi:

R
lst[2]

Quando usi una singola parentesi quadra per accedere a una componente della lista, ottieni una
sottolista. Qui, stai ottenendo una sottolista che contiene solo il secondo componente:

R
$n2
[1] 0 0

4. Accedere al secondo componente usando doppie parentesi:

R
lst[[2]]

Quando usi doppie parentesi quadre, ottieni direttamente l'oggetto all'interno del componente
specificato della lista. Qui, stai ottenendo il vettore nel secondo componente:
R
[1] 0 0

5. Accedere al secondo componente usando il suo nome:

R
lst$n2

Questo è un altro modo per accedere direttamente all'oggetto all'interno di un componente della
lista usando il nome del componente. Il risultato è identico all'utilizzo di doppie parentesi:

R
[1] 0 0

6. Accedere alla seconda colonna della matrice nel terzo componente:

R
lst$n3[,2]

Qui, stai accedendo alla seconda colonna della matrice che è il terzo componente della lista.
Questa operazione restituisce un vettore:

R
[1] 3 4

### Riassunto:

La lista lst è una collezione di tre componenti, ognuno con un nome. Ci sono diversi modi per
accedere a questi componenti e alle loro parti. La differenza nell'utilizzo di singole parentesi ([]) e
doppie parentesi ([[]]) è che le singole parentesi restituiscono una sottolista, mentre le doppie
parentesi restituiscono direttamente l'oggetto all'interno della componente. Utilizzare il nome del
componente con il simbolo del dollaro ($) è un altro modo conveniente per accedere direttamente
agli oggetti all'interno dei componenti di una lista.
L’AMBIENTE INTEGRATO R
Aggiungere o cancellare componenti alla lista

• Per aggiungere un componente alla fine di una lista di n−1


componenti basta utilizzare l’istruzione di assegnazione.
• Per aggiungere un componente in una posizione j di una
lista con n componenti, basta utilizzare la funzione di
concatenazione nell’istruzione di assegnazione.
• Ciò crea una lista di n+1 componenti, con i componenti in
posizione successiva a quello che inserito che vengono
automaticamente spostati di una posizione.
• Per cancellare il componente j-esimo di una lista basta
invece utilizzare l’istruzione di assegnazione, passandogli
l’oggetto NULL.

22
L’AMBIENTE INTEGRATO R
Fattori
QUANTITATIVI QUALITATIVI

I dati quantitativi sono rappresentati tramite I dati qualitativi sono rappresentati attraverso
valori numerici. stringhe di caratteri oppure mediante opportune
classi (sottointervalli numerici).

• In R si usa il termine fattore per indicare variabili di tipo


vettore in grado di rappresentare informazioni di tipo
qualitativo.
• Ad esempio, per una variabile individuo i valori
possono essere indicati mediante i nomi “bambino”,
“giovane”, “adulto”, “anziano” oppure utilizzando i
rispettivi codici numerici 1, 2, 3.
• È inoltre possible prevedere un ordinamento tra i valori.

23
L’AMBIENTE INTEGRATO R
Fattori

Metodo 1

Metodo 2

Metodo 3
24
Questo codice riguarda la manipolazione di dati categorici in R utilizzando vettori e fattori. Vediamo
nel dettaglio cosa fa ogni porzione del codice:

1. Creazione del Vettore "individuo":

individuo <-c(" bambino " ," giovane " ," adulto " ," anziano " ," bambino " ," giovane ")

Questa riga crea un vettore di stringhe di caratteri chiamato individuo. Il vettore contiene sei
elementi.

2. Visualizzazione del Vettore "individuo":

individuo

Questa riga visualizza il contenuto del vettore individuo, mostrando le sei stringhe.

3. Trasformazione del Vettore in un Fattore:

persona <- factor(individuo)

Il vettore individuo viene trasformato in un fattore chiamato persona. Un fattore rappresenta dati
categorici e ha livelli, che sono le diverse categorie dei dati. In questo caso, ci sono 4 livelli unici:
"bambino", "giovane", "adulto" e "anziano", nonostante ci siano sei elementi nel vettore originale.

4. Visualizzazione del Fattore "persona":

persona

Questa riga visualizza il fattore persona. Si nota che mentre il vettore individuo aveva spazi extra
intorno alle parole, il fattore persona ha rimosso questi spazi. Inoltre, mostra i livelli del fattore, che
sono ordinati alfabeticamente come predefinito in R.

5. Mostrare la Struttura del Vettore e del Fattore:

str(individuo)

Questa riga utilizza la funzione str(), che fornisce una descrizione compatta della struttura di un
oggetto R. Qui, mostra che individuo è un vettore di stringhe di caratteri (indicato da chr) con sei
elementi.

str(persona)

Analogamente, questa riga mostra la struttura del fattore persona. Indica che è un fattore con 4
livelli e poi mostra l'indice di ciascun elemento del fattore. Gli indici corrispondono all'ordine dei
livelli. Ad esempio, "bambino" è il terzo livello, quindi ha l'indice 3.

In sintesi, il codice dimostra come trasformare un vettore di stringhe in un fattore in R e come


esplorare la struttura di questi oggetti.
Questo frammento di codice in R riguarda la creazione di un "fattore ordinato". Ecco una
spiegazione dettagliata:

1. Creazione di un Fattore Ordinato "persona1":

persona1 <- ordered(individuo, levels = c(" bambino " ," giovane " ," adulto "," anziano "))

Con questa riga, stai creando un fattore ordinato chiamato persona1 dal vettore individuo. L'ordine
dei livelli (o categorie) viene definito esplicitamente attraverso l'argomento levels. In questo caso, hai
specificato che l'ordine dovrebbe essere "bambino", "giovane", "adulto" e "anziano".

2. Visualizzazione della Struttura di "persona1":

str(persona1)

La funzione str() mostra la struttura dell'oggetto persona1. Indica che persona1 è un "fattore
ordinato" (indicato da Ord. factor). Ci sono 4 livelli, e questi livelli sono ordinati come "bambino" <
"giovane" < "adulto" < "anziano". Dopo i due punti, vengono mostrati gli indici numerici dei valori
nel fattore. Ad esempio, "bambino" è il primo livello, quindi ha l'indice 1, "giovane" è il secondo, e
così via.

3. Visualizzazione del Fattore Ordinato "persona1":

persona1

Quando visualizzi direttamente l'oggetto persona1, R mostra i valori nel fattore e i relativi livelli in
fondo. In questo caso, vedrai le sei entrate: "bambino", "giovane", "adulto", "anziano", "bambino" e
"giovane", seguite da una descrizione dei livelli e del loro ordine.

In sintesi, il codice illustra come creare un fattore ordinato in R, visualizzarne la struttura e il


contenuto. Un fattore ordinato è utile quando le categorie dei dati hanno un ordine naturale o
intrinseco tra di loro.

Questo frammento di codice in R riguarda la creazione di fattori e la trasformazione di un fattore


normale in un "fattore ordinato". Andiamo per punti:

1. Creazione del Vettore "individuo":

individuo <-c(" bambino " ," giovane " ," adulto " ," anziano " ," bambino " ," giovane ")

Con questa riga, stai creando un vettore chiamato individuo che contiene sei stringhe. Le stringhe
rappresentano diverse categorie di età.

2. Creazione del Fattore "persona":

persona <- factor(individuo)

Qui, stai trasformando il vettore individuo in un fattore chiamato persona. Un fattore in R è utilizzato
per rappresentare dati categorici. Poiché ci sono ripetizioni nel vettore individuo (ad esempio, "
bambino " appare due volte), il fattore avrà meno elementi unici rispetto al vettore originale. In
questo caso, ci sono 4 livelli unici: "bambino", "giovane", "adulto" e "anziano".

3. Conversione del Fattore in un Fattore Ordinato:

ordered(persona, levels = c(" bambino " ," giovane " ," adulto "," anziano "))

Stai convertendo il fattore persona in un "fattore ordinato". A differenza di un fattore regolare, un


fattore ordinato ha un ordine specifico tra i suoi livelli. Stai specificando questo ordine attraverso
l'argomento levels, indicando che "bambino" viene prima di "giovane", che viene prima di "adulto",
e così via. Il risultato mostra i valori nel fattore ordinato seguiti dalla descrizione dei livelli e del loro
ordine intrinseco.

In sintesi, il codice crea un vettore di stringhe, lo trasforma in un fattore e infine converte quel fattore
in un fattore ordinato con un ordine specifico tra i livelli. Un fattore ordinato è utile quando le
categorie dei dati hanno un ordine naturale o intrinseco tra di loro.

Questo frammento di codice in R riguarda la creazione di un "fattore ordinato" direttamente


utilizzando la funzione factor() con l'argomento ordered impostato su TRUE. Ecco una spiegazione
dettagliata di ciascuna parte:

1. Creazione del Fattore Ordinato "persona2":

persona2 <- factor(individuo, levels =c(" bambino " ," giovane " ," adulto ", " anziano "), ordered =
TRUE)

In questa riga, stai creando un fattore ordinato direttamente dal vettore individuo. Stai
specificando l'ordine desiderato dei livelli attraverso l'argomento levels, indicando che "bambino"
viene prima di "giovane", che viene prima di "adulto", e così via. L'argomento ordered = TRUE
indica a R di trattare il risultato come un fattore ordinato, non come un fattore normale.

2. Visualizzazione della Struttura di "persona2":

str(persona2)

Utilizzando la funzione str(), stai visualizzando la struttura dell'oggetto persona2. L'output indica che
persona2 è un "fattore ordinato" (indicato da Ord.factor). Ci sono 4 livelli, e questi livelli sono
ordinati come "bambino" < "giovane" < "adulto" < "anziano". Inoltre, mostra gli indici numerici dei
valori nel fattore in base all'ordine specificato dei livelli. Ad esempio, "bambino" è il primo livello,
quindi ha l'indice 1, "giovane" è il secondo, e così via.

3. Visualizzazione del Fattore Ordinato "persona2":

persona2

(Nota: sembra ci sia un piccolo errore tipografico nel tuo codice; dovresti aver scritto persona2
invece di <persone2.)
Quando visualizzi direttamente l'oggetto persona2, R mostra i valori nel fattore e i relativi livelli in
fondo. In questo caso, vedrai le sei entrate: "bambino", "giovane", "adulto", "anziano", "bambino" e
"giovane", seguite da una descrizione dei livelli e del loro ordine.
In sintesi, il codice mostra come creare direttamente un fattore ordinato in R utilizzando la funzione
factor() e come visualizzare la sua struttura e il suo contenuto.
L’AMBIENTE INTEGRATO R
Raggruppamento dei dati Nell’esempio seguente si considera un vettore
numerico contenente i voti di 8 studenti e si
considerano le seguenti classi: (17, 21], (21, 24],
• In R si utilizza la funzione cut() per (24, 27], (27, 31]
trasformare dati numerici in dati qualitativi
mediante la loro collocazione in opportune
classi sulla base di quanto indicato nel
parametro breaks.
• Nel parametro breaks si inseriscono gli
estremi degli intervalli che sono aperti a
sinistra e chiusi a destra.
• Se si desidera ottenere intervalli chiusi a
sinistra e aperti a destra occorre
specificare in cut() l’opzione aggiuntiva
right = FALSE
25
Questo frammento di codice in R riguarda la creazione, manipolazione e consultazione di un
data.frame, che è una struttura dati tabulare molto comune in R. Analizziamo ciascuna parte:
1. Creazione del `data.frame` df:

df <- data.frame(Y1=c(100,200,400), Y2=c("si","no","si"))

Qui si crea un data.frame chiamato df con due colonne: Y1, che contiene numeri, e Y2, che
contiene stringhe.
2. Visualizzazione di df:

df

Questo comando mostra il contenuto di df. Vedrai un output con numeri di riga sulla sinistra,
seguito dai valori nelle colonne Y1 e Y2.
3. Consultazione della Lunghezza di df:

length(df)

La funzione length() restituisce il numero di colonne nel data.frame. Poiché df ha due colonne (Y1 e
Y2), l'output sarà 2.
4. Visualizzazione delle Dimensioni di df:

dim(df)

La funzione dim() restituisce un vettore con il numero di righe e colonne del data.frame. Nel caso di
df, l'output sarà 3 2 poiché ci sono tre righe e due colonne.
5. Cambio dei Nomi delle Righe:

row.names(df) = c("X1", "X2", "X3")

Qui si stanno modificando i nomi delle righe di df in X1, X2 e X3.


6. Visualizzazione del `data.frame` dopo il Cambio dei Nomi delle Righe:

df

Ora, quando visualizzi df, vedrai che i numeri di riga sono stati sostituiti con X1, X2 e X3.
7. Consultazione di una Colonna del `data.frame`:

df$Y1

Questo comando restituirà il contenuto della colonna Y1 di df, ovvero 100, 200, 400.

df$Y2
Analogamente, questo comando restituirà il contenuto della colonna Y2 di df, ovvero si, no, si.

In sintesi, il codice dimostra come creare, manipolare e consultare un data.frame in R, una delle
strutture dati più fondamentali e versatili del linguaggio.
L’AMBIENTE INTEGRATO R
Principali funzioni su data frame
Data frame
• Numero di colonne del dataframe df • Individua l’elemento in posizione (i, j)
frame è un oggetto di tipo lista che si presenta in forma di tabellanel
> length(df)
• In R un data data frame
(matrice di dati)df
• Numero di righe e colonne > df[i,j]
ed è costituito da righe eecolonne.
(osservazioni variabili) del data • Seleziona nella k-esima colonna gli
• Ogni riga frame dfframe individua un’osservazione e ad ogni colonna corrisponde
del data elementi
una da i a j
> dim(df) > df[i:j, k]
variabile.
• Nomi delle etichette delle colonne del • Seleziona una parte del data frame df
• Come perdata frameledfcolonne di un data frame hanno avente
le matrici, tutte la le righelunghezza
stessa da i a j e elei colonne
valori da
> names(df) kar
contenuti in ogni singola colonna sono omogenei
• Assegna/modifica le etichette delle (numeri, caratteri, valori logici, . . .). Invece,
> df[i : j, k : r]
a differenza delle
righe matrici,
del un data
data frame dfframe può avere colonne di tipo diverso.
• Seleziona la parte del data frame df
> row.names(df) costituita dalla i-esima riga
• Le righe e le colonne possono avere delle etichette costituite da nomi o da valori numerici. Il
> df[i,]
numero di colonne è individuato da length(nomeDataFrame), mentre la
• Seleziona dim(nomeDataFrame)
parte del data frame df
costituita
fornisce un vettore contenente il numero di righe e di colonne del dalla j-esima colonna
data frame.
> df[,j]
• Il comando names(nomeDataFrame) restituisce i nomi delle etichette delle colonne. I nomi
delle righe possono essere modificati attraverso il comando row.names(nomeDataFrame).
26

Potrebbero piacerti anche