Comment utiliser « PAS IN » Opérateur en R (avec exemples)



Vous pouvez utiliser la syntaxe de base suivante pour sélectionner tous les éléments qui ne figurent pas dans une liste de valeurs dans R :

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

Les exemples suivants montrent comment utiliser cette syntaxe dans la pratique.

Exemple 1 : Comment utiliser « NOT IN » avec des vecteurs

Le code suivant montre comment sélectionner toutes les valeurs d’un vecteur dans R qui ne figurent pas dans une certaine liste de valeurs :

#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

Toutes les valeurs qui ne sont pas égales à 3 ou 4 sont affichées dans la sortie.

Notez que nous pouvons utiliser la même syntaxe pour sélectionner tous les éléments d’un vecteur qui ne figurent pas dans une certaine liste de caractères :

#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"

Toutes les valeurs qui ne sont pas égales à « A » ou « C » sont affichées dans la sortie.

Exemple 2 : Comment utiliser « NOT IN » avec des trames de données

Le code suivant montre comment sélectionner toutes les lignes d’un bloc de données dans R dans lequel une certaine colonne n’est pas égale à certaines valeurs :

#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

Notez que toutes les lignes qui ne comportent pas de « A » ou de « B » dans la colonne d’équipe sont renvoyées.

Nous pouvons également utiliser une syntaxe similaire pour sélectionner toutes les lignes dans lesquelles une certaine colonne n’est pas égale à certaines valeurs numériques :

#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

Notez que toutes les lignes qui ne sont pas égales à 89 ou 99 dans la colonne des points sont renvoyées.

Ressources additionnelles

Comment utiliser l’opérateur %in% dans R
Comment sous-ensembler un bloc de données dans R
Comment sous-ensembler des listes dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *