Come utilizzare l'operatore "not in" in r (con esempi)


È possibile utilizzare la seguente sintassi di base per selezionare tutti gli elementi che non sono presenti in un elenco di valori in R:

 ! (data %in% c(value1, value2, value3, ...))

Gli esempi seguenti mostrano come utilizzare questa sintassi nella pratica.

Esempio 1: come utilizzare “NOT IN” con i vettori

Il codice seguente mostra come selezionare tutti i valori di un vettore in R che non si trovano in un determinato elenco di valori:

 #define numeric vector
num_data <- c(1, 2, 3, 3, 4, 4, 5, 5, 6)

#display all values in vector not equal to 3 or 4
num_data[ ! (num_data %in% c(3, 4))]

[1] 1 2 5 5 6

Tutti i valori che non sono uguali a 3 o 4 vengono visualizzati nell’output.

Nota che possiamo usare la stessa sintassi per selezionare tutti gli elementi di un vettore che non si trovano in un determinato elenco di caratteri:

 #define vector of character data
char_data <- c('A', 'A', 'A', 'B', 'B', 'C', 'C', 'D', 'D', 'D')

#display all elements in vector not equal to 'A', or 'C'
char_data[ ! (char_data %in% c('A', 'C'))]

[1] “B” “B” “D” “D” “D”

Tutti i valori diversi da “A” o “C” vengono visualizzati nell’output.

Esempio 2: come utilizzare “NOT IN” con i frame di dati

Il codice seguente mostra come selezionare tutte le righe di un frame di dati in R in cui una determinata colonna non corrisponde a determinati valori:

 #create data frame
df <- data. frame (team=c('A', 'A', 'B', 'B', 'C', 'C', 'D'),
                 points=c(77, 81, 89, 83, 99, 92, 97),
                 assists=c(19, 22, 29, 15, 32, 39, 14))

#view data frame
df

  team points assists
1 A 77 19
2 A 81 22
3 B 89 29
4 B 83 15
5 C 99 32
6 C 92 39
7 D 97 14

#select all rows where team is not equal to 'A' or 'B'
subset(df, ! (team %in% c('A', 'B')))

  team points assists
5 C 99 32
6 C 92 39
7 D 97 14

Tieni presente che vengono restituite tutte le righe che non contengono una “A” o una “B” nella colonna del team.

Possiamo anche usare una sintassi simile per selezionare tutte le righe in cui una determinata colonna non corrisponde a determinati valori numerici:

 #create data frame
df <- data. frame (team=c('A', 'A', 'B', 'B', 'C', 'C', 'D'),
                 points=c(77, 81, 89, 83, 99, 92, 97),
                 assists=c(19, 22, 29, 15, 32, 39, 14))

#view data frame
df

  team points assists
1 A 77 19
2 A 81 22
3 B 89 29
4 B 83 15
5 C 99 32
6 C 92 39
7 D 97 14

#select all rows where team is not equal to 'A' or 'B'
subset(df, ! (points %in% c(89, 99)))

  team points assists
1 A 77 19
2 A 81 22
4 B 83 15
6 C 92 39
7 D 97 14

Tieni presente che vengono restituite tutte le righe che non sono uguali a 89 o 99 nella colonna dei punti.

Risorse addizionali

Come utilizzare l’operatore %in% in R
Come sottoimpostare un frame di dati in R
Come creare sottoinsiemi di elenchi in R

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *