Inserire
a mano i dati in R
non accade di frequente, ma è utile quando i dati da inserire sono
pochi, come ad esempio quando si vuole effettuare un test chi-quadrato [1],
impiegare il teorema di Bayes [2] o realizzare dei grafici a torta [3].
Per
questo ho predisposto due esempi che illustrano la sintassi da
utilizzare per inserire direttamente da tastiera array (vettori) e
combinarli in matrici assegnando i nomi alle variabili
e ai casi [4].
Il
primo esempio genera un vettore (array), lo trasforma in una matrice, assegna un nuovo nome alla variabile/colonna e infine assegna un nuovo descrittore a ciascuno dei casi/righe.
Per eseguire lo script copiatelo quindi incollatelo nella
Console di R e premete ↵ Invio.
#
GENERA UN ARRAY E LO TRASFORMA IN UNA MATRICE
#
x
<- c(4.2, 6.8, 2.5, 8.3, 5.4, 7.9, 5.3, 6.7, 2.2, 3.1) # genera l'array x
x # mostra l'array x
mean(x) # calcola la media
#
mymatrix
<- data.frame(x) # trasforma l'array x in una matrice
mymatrix # mostra la matrice con i casi/righe identificati automaticamente da R
mean (mymatrix$x) # calcola la media
#
names(mymatrix)
<- c("Variabile_1") # assegna un nuovo nome alla variabile/colonna
mymatrix # mostra la matrice con il nuovo nome della variabile/colonna
mean(mymatrix$Variabile_1) # calcola la media richiamando il nome della variabile/colonna
#
row.names(mymatrix) <- c("Riga_uno", "Riga_due", "Riga_tre", "Riga_quattro", "Riga_cinque", "Riga_sei", "Riga_sette", "Riga_otto", "Riga_nove", "Riga_dieci") # sostituisce gli identificativi numerici di riga di R con nuovi descrittori univoci dei casi/righe
mymatrix # mostra la matrice con i nuovi descrittori dei casi/righe
mean(mymatrix[,1]) # calcola la media richiamando il numero della variabile/colonna
#
Utilizzate
i tasti Pag-su
e Pag-giù
per scorrere nella finestra della
Console di R
quanto è accaduto, che viene illustrato dai commenti
inseriti in ciascuna riga.
Da notare come, quando l'array x
viene trasformato nella matrice mymatrix
mediante la funzione data.frame() [5], ai casi/righe viene assegnato di default un identificativo numerico univoco.
A questo punto viene impiegata la funzione names() per assegnare un nuovo nome alla variabile. In questo modo gli identificativi numerici dei casi/righe assegnati di default sono sostituiti con dei nuovi descrittori univoci (“Riga_uno”, “Riga_due”, eccetera) impiegando la funzione row.names().
Questo
è quindi il contenuto dell'oggetto mymatrix
definitivo riportato alla penultima riga
di codice:
> mymatrix # mostra mymatrix con il nome della variabile/colonna e i descrittori dei casi
Variabile_1
Riga_uno 4.2
Riga_due 6.8
Riga_tre 2.5
Riga_quattro 8.3
Riga_cinque 5.4
Riga_sei 7.9
Riga_sette 5.3
Riga_otto 6.7
Riga_nove 2.2
Riga_dieci 3.1
Il calcolo della media è stato introdotto ogni volta per illustrare la sintassi da impiegare. Interessante l'ultimo caso, all'ultima riga di codice: qui la media è stata calcolata richiamando il numero della colonna sulla quale va calcolata, un modo interessante e utile per richiamare una variabile di una matrice o di una tabella.
> mean(mymatrix[,1]) # calcola la media richiamando il numero della colonna
[1] 5.24
In
questo secondo esempio di inserimento manuale dei dati sono generati
due vettori (array), che sono combinati in una matrice di 2 colonne per 10
righe, quindi alla matrice viene aggiunta una terza colonna/variabile. Sono poi assegnati nuovi nomi alle variabili/colonne e infine
viene assegnato un nuovo descrittore univoco a ciascuno dei casi/righe.
Copiate lo script quindi incollatelo nella Console di R e premete ↵ Invio.
Copiate lo script quindi incollatelo nella Console di R e premete ↵ Invio.
# GENERA DUE ARRAY, LI COMBINA IN UNA MATRICE E AGGIUNGE UNA COLONNA
#
x <- c(4.2, 6.8, 2.5, 8.3, 5.4, 7.9, 5.3, 6.7, 2.2, 3.1) # genera l'array x
y <- c(3.1, 2.2, 6.7, 5.3, 7.9, 5.4, 8.3, 2.5, 6.8, 4.2) # genera l'array y
#
mymatrix <- data.frame(x, y) # combina gli array x e y in una matrice
mymatrix # mostra la matrice con i casi/righe identificati automaticamente da R
sapply(mymatrix, mean) # calcola la media
#
mymatrix$z <- mymatrix$x + mymatrix$y # aggiunge una nuova colonna
mymatrix # mostra la matrice con i casi/righe identificati automaticamente da R
sapply(mymatrix, mean) # calcola la media
#
names(mymatrix) <- c("Var_1", "Var_2", "Var_3") # assegna un nuovo nome alle variabili/colonne
mymatrix # mostra la matrice con i nuovi nomi delle variabili/colonne
mean(mymatrix$Var_3) # calcola la media richiamando il nome della variabile/colonna
#
row.names(mymatrix) <- c("Caso_uno", "Caso_due", "Caso_tre", "Caso_quattro", "Caso_cinque", "Caso_sei", "Caso_sette", "Caso_otto", "Caso_nove", "Caso_dieci") # sostituisce gli identificativi numerici di riga di R con nuovi descrittori univoci dei casi/righe
mymatrix # mostra la matrice con i nuovi descrittori dei casi/righe
mean(mymatrix[,3]) # calcola la media richiamando il numero della variabile/colonna
#
Dopo
avere eseguito lo script utilizzate i tasti
Pag-su
e Pag-giù
per scorrere nella finestra della
Console di R
quanto è accaduto, che viene di nuovo illustrato dai commenti
inseriti in ciascuna riga.
Da notare nuovamente come una volta combinati
i due array x e y
nella matrice mymatrix mediante
la funzione data.frame() ai casi/righe viene assegnato di default un identificativo numerico univoco. Quindi con la funzione sapply() viene calcolata la media su tutte le colonne/variabili della matrice. Questo accade anche quando viene aggiunta alla matrice una nuova colonna/variabile z contenente la somma della variabile x e della variabile y.
A questo punto viene
impiegata la funzione names() per
assegnare i nuovi nomi alle variabili delle due colonne mentre con la funzione mean() è possibile calcolare separatamente la media della colonna/variabile Var_3.
Infine gli
identificativi numerici delle righe/casi assegnati da R sono
sostituiti con dei nuovi descrittori univoci (“Riga uno”, “Riga
due”, eccetera) impiegando la funzione row.names().
Questo è quindi il contenuto dell'oggetto mymatrix definitivo riportato alla penultima riga di codice:
> mymatrix # mostra la matrice con i nuovi descrittori dei casi/righe
Var_1 Var_2 Var_3
Caso_uno 4.2 3.1 7.3
Caso_due 6.8 2.2 9.0
Caso_tre 2.5 6.7 9.2
Caso_quattro 8.3 5.3 13.6
Caso_cinque 5.4 7.9 13.3
Caso_sei 7.9 5.4 13.3
Caso_sette 5.3 8.3 13.6
Caso_otto 6.7 2.5 9.2
Caso_nove 2.2 6.8 9.0
Caso_dieci 3.1 4.2 7.3
Infine l'ultima riga di codice ci ricorda la possibilità di impiegare il numero della colonna per specificare i dati sui quali effettuare il calcolo della media:
> mean(mymatrix[,3]) # calcola la media richiamando il numero della colonna
[1] 10.48
Se siete interessati al tema potrebbero esservi utili anche gli esempi riportati in:
[1] Vedere la sezione Analisi di dati qualitativi alla pagina Indice.
[2] Vedere il post Sensibilità specificità e valore predittivo.
[3] Vedere il post Grafici a torta.
[4] Parliamo di array o vettore nel caso di dati numerici monodimensionali, disposti su una sola riga,
8 | 6 | 11 | 7 |
di matrice nel caso di dati numerici disposti su più righe e più colonne
8 | 9 | 15 | 14 |
6 | 7 | 18 | 12 |
11 | 8 | 17 | 13 |
7 | 4 | 19 | 17 |
e di tabella nei casi in cui il contenuto, disposto su più righe e più colonne, è rappresentato oltre che da dati numerici, anche da testo e/o operatori logici
M | 7 | 9 | VERO |
F | 3 | 12 | VERO |
F | 5 | 10 | FALSO |
Di fatto i vettori sono matrici aventi una sola riga o una sola colonna. Una matrice con una sola riga e più colonne è detta matrice riga o vettore riga, mentre una matrice con una sola colonna e più righe è detta matrice colonna o vettore colonna.
[5]
Digitate help(nomedellafunzione)
nella Console di R per
la documentazione di questa e delle altre funzioni qui impiegate.
Nessun commento:
Posta un commento