R : supprimer les lignes du bloc de données en fonction de la condition



Vous pouvez utiliser la fonction subset() pour supprimer les lignes avec certaines valeurs dans un bloc de données dans R :

#only keep rows where col1 value is less than 10 and col2 value is less than 8
new_df <- subset(df, col1<10 & col2<8) 

Les exemples suivants montrent comment utiliser cette syntaxe en pratique avec le bloc de données suivant :

#create data frame
df <- data.frame(a=c(1, 3, 4, 6, 8, 9),
                 b=c(7, 8, 8, 7, 13, 16),
                 c=c(11, 13, 13, 18, 19, 22),
                 d=c(12, 16, 18, 22, 29, 38))

#view data frame
df

  a  b  c  d
1 1  7 11 12
2 3  8 13 16
3 4  8 13 18
4 6  7 18 22
5 8 13 19 29
6 9 16 22 38

Exemple 1 : Supprimer les lignes égales à une certaine valeur

Le code suivant montre comment supprimer toutes les lignes dont la valeur dans la colonne « c » est égale à 13 :

#remove rows where column 'c' is equal to 13
new_df <- subset(df, c != 13) 

#view updated data frame
new_df

  a  b  c  d
1 1  7 11 12
4 6  7 18 22
5 8 13 19 29
6 9 16 22 38

Exemple 2 : Supprimer les lignes égales à l’une des plusieurs valeurs

Le code suivant montre comment supprimer toutes les lignes dont la valeur dans la colonne « b » est égale à 7 ou 8 :

#remove rows where value in column b is equal to 7 or 8
new_df <- subset(df, !(b %in% c(7, 8)))

#view updated data frame
new_df

  a  b  c  d
5 8 13 19 29
6 9 16 22 38

Exemple 3 : Supprimer des lignes en fonction de plusieurs conditions

Le code suivant montre comment supprimer toutes les lignes où la valeur de la colonne « b » est égale à 7 ou où la valeur de la colonne « d » est égale à 38 :

#remove rows where value in column b is 7 or value in column d is 38
new_df <- subset(df, b != 7 & d != 38)

#view updated data frame
new_df

  a  b  c  d
2 3  8 13 16
3 4  8 13 18
5 8 13 19 29

Ressources additionnelles

Comment supprimer les lignes en double dans R
Comment utiliser l’opérateur %in% dans R
Comment recoder des valeurs dans R

Ajouter un commentaire

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