J'ai un bloc de données et je veux supprimer les lignes qui sont dupliquées dans toutes les colonnes sauf une colonne et choisir de conserver celles qui ne sont pas certaines valeurs.
Dans l'exemple ci-dessus, la 3e ligne et la 4e ligne sont dupliquées pour toutes les colonnes à l'exception de col3, donc je veux garder une seule ligne. L'étape compliquée est que je veux garder la 4ème ligne au lieu de la 3ème car la 3ème ligne de col3 est "exclue". En général, je souhaite ne conserver que les lignes (qui ont été dupliquées) qui n'ont pas "exclu".
Ma trame de données réelle a beaucoup de lignes dupliquées et parmi ces 2 lignes qui sont dupliquées, l'une d'elles est "exclue" à coup sûr.
Ci-dessous est reproductible ex:
a <- c(1,2,3,3,7)
b <- c(4,5,6,6,8)
c <- c("red","green","excluded","orange","excluded")
d <- data.frame(a,b,c)
Merci beaucoup!
Mise à jour: ou, lors de la suppression des doublons, ne conserver que la deuxième observation (4e ligne).
dplyr avec une base R devrait fonctionner pour cela:
library(dplyr)
a <- c(1,2,3,3,3,7)
b <- c(4,5,6,6,6,8)
c <- c("red","green","brown","excluded","orange","excluded")
d <- data.frame(a,b,c)
d <- filter(d, !duplicated(d[,1:2]) | c!="excluded")
Result:
a b c
1 1 4 red
2 2 5 green
3 3 6 brown
4 3 6 orange
5 7 8 excluded
Le filtre éliminera tout ce qui devrait être exclu et non dupliqué. J'ai ajouté un exemple d'exclusion non unique à votre exemple («marron») à tester également.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots