Pagina personale di:
Carlo Vecchio
appunti di C#, R, SQL Server, ASP.NET, algoritmi, numeri
Vai ai contenuti

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


© 2020 Carlo Vecchio
Torna ai contenuti