Supprimer les lignes en double par colonne dans R

Jinku Hu 23 janvier 2022
  1. Utilisez la fonction distinct du package dplyr pour supprimer les lignes en double par colonne dans R
  2. Utilisez les fonctions group_by, filter et duplicated pour supprimer les lignes en double par colonne dans R
  3. Utilisez les fonctions group_by et slice pour supprimer les lignes en double par colonne dans R
Supprimer les lignes en double par colonne dans R

Cet article présentera comment supprimer les lignes en double par colonne dans R.

Utilisez la fonction distinct du package dplyr pour supprimer les lignes en double par colonne dans R

Le package dplyr fournit la fonction distinct, l’une des bibliothèques de manipulation de données les plus courantes utilisées en langage R. distinct sélectionne des lignes uniques dans le bloc de données donné. Il prend la DataFrame comme premier argument, puis les variables qui doivent être prises en compte lors de la sélection. Plusieurs variables de colonne peuvent être fournies pour filtrer les lignes uniques, mais dans l’extrait de code suivant, nous montrons les exemples de variable unique. Le troisième argument est facultatif et a la valeur par défaut - FALSE, mais si l’utilisateur passe explicitement TRUE, la fonction conservera toutes les variables dans le bloc de données après le filtrage. Notez que dplyr utilise une fonction opérateur appelée tubes de forme - %>%, qui est interprétée comme fournissant la variable de gauche comme premier argument de la fonction de droite. A savoir, la notation x %?% f(y) devient f(x, y).

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% distinct(id, .keep_all = TRUE)
t2 <- df1 %>% distinct(gender, .keep_all = TRUE)
t3 <- df1 %>% distinct(variant, .keep_all = TRUE)

df2 <- mtcars

tmp1 <- df2 %>% distinct(cyl, .keep_all = TRUE)
tmp2 <- df2 %>% distinct(mpg, .keep_all = TRUE)

Utilisez les fonctions group_by, filter et duplicated pour supprimer les lignes en double par colonne dans R

Une autre solution pour supprimer les lignes en double par valeurs de colonne consiste à regrouper le bloc de données avec la variable de colonne, puis à filtrer les éléments à l’aide des fonctions filter et duplicated. La première étape se fait avec la fonction group_by qui fait partie du package dplyr. Ensuite, la sortie de l’opération précédente est redirigée vers la fonction filter pour éliminer les lignes en double.

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% group_by(id) %>% filter (! duplicated(id))
t2 <- df1 %>% group_by(gender) %>% filter (! duplicated(gender))
t3 <- df1 %>% group_by(variant) %>% filter (! duplicated(variant))

df2 <- mtcars

tmp3 <- df2 %>% group_by(cyl) %>% filter (! duplicated(cyl))
tmp4 <- df2 %>% group_by(mpg) %>% filter (! duplicated(mpg))

Utilisez les fonctions group_by et slice pour supprimer les lignes en double par colonne dans R

Alternativement, on peut utiliser la fonction group_by avec slice pour supprimer les lignes en double par valeurs de colonne. slice fait également partie du package dplyr et sélectionne les lignes par index. Fait intéressant, lorsque la DataFrame est regroupée, slice sélectionnera les lignes de l’index donné dans chaque groupe, comme illustré dans l’exemple de code suivant.

library(dplyr)

df1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5),
                 gender = c("F", "F", "M", "F", "B", "B", "F", "M"),
                 variant = c("a", "b", "c", "d", "e", "f", "g", "h"))

t1 <- df1 %>% group_by(id) %>% slice(1)
t2 <- df1 %>% group_by(gender) %>% slice(1)
t3 <- df1 %>% group_by(variant) %>% slice(1)

df2 <- mtcars

tmp5 <- df2 %>% group_by(cyl) %>% slice(1)
tmp6 <- df2 %>% group_by(mpg) %>% slice(1)
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - R Data Frame