Supprimer les doublons dans une colonne en fonction d'une autre colonne

Sarah

Je cherche un moyen plus agréable de le faire dans R. J'ai une possibilité mais il semble qu'il devrait y avoir un moyen intelligent/plus lisible.

Je souhaite supprimer les doublons dans une/plusieurs colonnes uniquement si une condition est remplie dans une autre colonne (ou colonnes).

Dans mon exemple simplifié, je souhaite supprimer les doublons dans la colonne Xuniquement si la colonne Yest NA, mais conserver NAen Y sans X dupliqué.

testDF<- data.frame(X= c(1:4,4:8,8:12), Y = 1:14)
testDF$Y[c(4,6,10)]<- NA

Ma solution actuelle est :

testDF[!(testDF$X %in% testDF$X[which(duplicated(testDF$X))] & is.na(testDF$Y)),]

ou alors

library(dplyr)

testDF %>% 
    dplyr::filter(!(testDF$X%in% testDF$X[which(duplicated(testDF$X))] & is.na(testDF$Y))) 

qui semblent tous les deux désordonnés et déroutants, et dans une application réelle où je vais regarder plus de deux colonnes, cela pourrait devenir impraticable.

J'espérais quelque chose de plus du genre :

 testDF %>% dplyr::filter(!(duplicated(X) & is.na(Y))) 

mais il duplicated()n'identifie que la deuxième instance d'une duplication, donc si Y's NAest conforme à la première des valeurs X dupliquées, il ne sera pas filtré.

Vous recherchez de préférence une solution de base ou de rangement car aucun des autres scripts n'utilise data.table

Clé Mélissa

Vous pouvez également simplement postuler duplicateddans les deux sens :

testDF %>%
  filter(!is.na(Y) | (!duplicated(X) & !duplicated(X, fromLast = TRUE) ))

(fortement influencé par ceci : recherchez les éléments dupliqués avec dplyr - je laisserai les autres décider s'il est suffisamment proche pour être un doublon)

Pour rendre votre code encore plus lisible, vous pouvez même le mettre dans une fonction (peut-être avec un meilleur nom de fonction que le mien) :

all_duplicates <- function(x) {
  duplicated(x) | duplicated(x, fromLast = TRUE)
}
testDF %>%
  filter(!is.na(Y) | !all_duplicates(X) )

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Supprimer les doublons, en priorisant les lignes à supprimer en fonction d'une autre colonne, dans R

Supprimer les doublons dans une colonne en fonction d'une autre colonne où il y a une hiérarchie

Supprimer les doublons dans Excel en fonction d'une autre valeur de colonne

Comment rechercher et supprimer les doublons dans une colonne en fonction des valeurs d'une autre colonne ?

Supprimer les doublons d'un jeu de données en fonction d'une valeur dans une autre colonne

Comment supprimer toutes les lignes en double d'une colonne en fonction du fait qu'un seul des doublons a une certaine valeur dans une autre colonne

Bash: trouver des doublons dans une colonne, supprimer des lignes en fonction de la comparaison d'une autre colonne

Supprimer les lignes dans la première colonne Df, en fonction d'une autre colonne Df

Supprimer les mots répétés dans la colonne, en fonction d'une autre colonne

Supprimer les doublons de ligne dans un dataframe en fonction d'une colonne

Supprimer les lignes en double dans une colonne en fonction d'une autre colonne et conserver les autres colonnes intactes

Supprimer les doublons par valeur unique dans une autre colonne

Supprimer / modifier les valeurs d'une colonne en fonction des valeurs d'une autre colonne dans R

Supprimer les doublons en fonction d'une valeur d'une colonne différente

supprimer les lignes qui ont des doublons en fonction d'une colonne en fonction du nombre de NA dans une colonne différente

Suppression des doublons d'une colonne en fonction des conditions d'une autre dans R

Supprimer les doublons sur une colonne, rompant les liens d'une autre colonne

Comment supprimer les doublons dans la colonne par rapport aux valeurs d'une autre colonne dans les pandas ?

Supprimez les doublons d'une colonne en fonction de la valeur d'une autre colonne, Python, Pandas

Supprimer les doublons dans une ligne en fonction de la valeur de la colonne

Suppression des doublons dans les séries temporelles en fonction d'une autre colonne à l'aide de R

Trier les lignes d'un dataframe (colonne avec doublons) en fonction d'une colonne d'un autre dataframe en Python

Comment supprimer les lignes de doublons en fonction d'une colonne « clé » ?

Déterminez les valeurs maximales dans une colonne en fonction d'une autre colonne

Regrouper les valeurs d'une colonne en fonction des valeurs d'une autre colonne dans R

Supprimer les doublons mais conserver les données d'une colonne dans une nouvelle colonne

Pandas : Comment remplacer les valeurs de Nan dans une colonne en fonction d'une autre colonne ?

Remplacer les valeurs dans une colonne en fonction d'un vecteur correspondant conditionnellement à une autre colonne

Diviser les données dans une colonne en fonction de la valeur d'une autre colonne

TOP liste

  1. 1

    J'ai besoin de savoir si ces deux phrases sont les mêmes en programmation

  2. 2

    Javascript indiquant "impossible de définir la propriété 'innerHTML' sur null"

  3. 3

    Nextcloud avec Docker: impossible de créer ou d'écrire dans le répertoire de données

  4. 4

    La taille de la forme n'est pas égale à la taille de la cellule du tableau et ajuste le texte à l'intérieur de la forme

  5. 5

    Trouver l'intersection et l'union de deux rectangles

  6. 6

    Comment changer la couleur de la police dans R?

  7. 7

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  8. 8

    Référencement des assemblys de structure .net 4.7 dans la solution .net core 2

  9. 9

    Compter combien de fois un nombre apparaît dans un tableau aléatoire

  10. 10

    Pourquoi utiliser Asyncio ne réduit pas le temps d'exécution global en Python et n'exécute pas les fonctions simultanément?

  11. 11

    Comment convertir une chaîne en tuple en utilisant `reads`?

  12. 12

    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

  13. 13

    comment afficher un bouton au-dessus d'un autre élément ?

  14. 14

    Création d'un nouvel objet d'une classe avec un nouveau nom en cliquant sur un bouton dans java swing

  15. 15

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  16. 16

    Restauration de la sauvegarde de la base de données SQL Server sur la version inférieure

  17. 17

    Créer un graphique à barres avec une fréquence relative / à partir d'un objet de table dans R

  18. 18

    Création d'un rappel python pour une fonction C à partir d'une DLL avec un tampon char.

  19. 19

    java.lang.NoClassDefFoundError: org / springframework / data / repository / config / BootstrapMode

  20. 20

    comment le contrôle de tableau javascript devrait-il être

  21. 21

    impossible d'ouvrir un nouvel onglet dans react, ajoute localhost: 3000 sur le lien?

chaudétiquette

Archive