R - Subsetting
R
Subsetting
Cos'è il subsetting
- Per Subsetting si intendono tutte le procedure con le quali si estrae da un insieme di dati, un sottoinsieme di dati.
- Le procedure atte al Subsetting, sono per esempio la rimozione di righe (osservazioni), la rimozione di colonne (variabili), la rimozione di valori non disponibili (detti NA), il calcolo di variabili in base a certe funzioni, eccetera.
Subsetting di vettori
- Negli esempi seguenti, si vedono alcuni esempi tipici di Subsetting per i vettori, estrazione e ricerche di elementi.
# Crea un vettore di 20 elementi random.
x <- sample(20)
print(x)
[1] 18 16 15 17 8 11 14 9 19 3 12 7 2 13 4 1 20 5 10 6
# Estrae (per indice del vettore) un elemento, due elementi e un range.
x[2]
[1] 16
x[c(3, 6)]
[1] 15 11
x[5:10]
[1] 8 11 14 9 19 3
# Estrae (per indice del vettore) tutti gli elementi eccetto alcuni.
x[c(-3, -6, -9)]
[1] 18 16 17 8 14 9 3 12 7 2 13 4 1 20 5 10 6
# Alternativa.
x[-c(3, 6, 9)]
[1] 18 16 17 8 14 9 3 12 7 2 13 4 1 20 5 10 6
# Estrae (per condizione) gli elementi maggiori di 10.
# Come vettore logico.
x > 10
[1] TRUE TRUE TRUE TRUE FALSE TRUE TRUE FALSE TRUE FALSE TRUE FALSE FALSE TRUE
[15] FALSE FALSE TRUE FALSE FALSE FALSE
# Come vettore numerico.
x [x > 10]
[1] 18 16 15 17 11 14 19 12 13 20
# Ricerca di alcuni valori.
# Come vettore logico.
x %in% c(10,12,14)
[1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
[15] FALSE FALSE FALSE FALSE TRUE FALSE
# Estrae gli indici degli elementi maggiori di 10.
which(x >= 10)
[1] 1 2 3 4 6 7 9 11 14 17 19
# Estrae l'indice dell'elemento minimo.
which.min(x)
[1] 16
# Estrae l'indice dell'elemento massimo.
which.max(x)
[1] 17
- Negli esempi seguenti viene mostrato come eliminare da un vettore gli elementi NA e NaN e i valori duplicati.
- Si ricorda che la funzione is.na() restituisce TRUE sia per gli NA che per gli NaN.
# Crea un vettore con alcuni elementi NA e NaN.
x <- c(1, 2, NA, 4, 5, NaN, 7, 8, NA)
# Elimina dal vettore gli NA e gli NaN.
x[!is.na(x)]
[1] 1 2 4 5 7 8
# Restituisce una tabella riassuntiva con le osservazioni valide e quelle mancanti.
table(complete.cases(x))
FALSE TRUE
3 6
# Crea un vettore con alcuni elementi duplicati.
x <- c(1, 2, 3, 4, 3, 2, 1, 5, 6, 7, 8, 7, 6, 5)
# Test presenza duplicati, si ottiene un vettore logico.
duplicated(x)
[1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE TRUE
# Posizione dei duplicati con which.
which(duplicated(x))
[1] 5 6 7 12 13 14
# Eliminazione dei duplicati
x[!duplicated(x)]
[1] 1 2 3 4 5 6 7 8