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

Omwrichmond

J'ai une trame de données comme celle-ci:

dat1 <- data.frame(Unit = c("a","a","b","c","c","c","d"), Habitat = c("choppy sands","sands","meadow","sands","meadow","choppy sands","choppy sands"), Litter = c(3.7,3.4,5.6,2.1,3.6,7.5,1.2))

>dat1
  Unit      Habitat Litter
1    a choppy sands    3.7
2    a        sands    3.4
3    b       meadow    5.6
4    c        sands    2.1
5    c       meadow    3.6
6    c choppy sands    7.5
7    d choppy sands    1.2

Je souhaite rechercher et supprimer les lignes en double en fonction de l'unité où la ligne unique à conserver pour chaque valeur d'unité dépend d'une hiérarchie de valeurs dans Habitat. S'il y a des lignes dupliquées basées sur l'Unité, une ligne où Habitat = "prairie" a la priorité, puis une ligne où Habitat = "sables agités", puis une ligne où Habitat = "sables". Ainsi, la trame de données résultante ressemblerait à ceci:

  Unit      Habitat Litter
1    a choppy sands    3.7
2    b       meadow    5.6
3    c       meadow    3.6
4    d choppy sands    1.2

Toute aide très appréciée.

Curt F.

En utilisant dplyret forcats(tous deux dans le tidyversesystème de packages), vous pouvez faire quelque chose comme ceci:

dat2 <- 
    dat1 %>%
    mutate(Habitat = fct_relevel(Habitat, c('meadow', 'choppy sands', 'sands'), after=0L)) %>%
    group_by(Unit) %>%
    filter(as.numeric(Habitat) == min(as.numeric(Habitat)))

Cela donne la sortie souhaitée. L'idée est de créer Habitatune variable de facteur et d'encoder votre hiérarchie dans les niveaux de cette variable. Ensuite, (dans chaque Unitgroupe), vous conservez les lignes qui ont la priorité la plus élevée Habitaten filtrant à l'aide de la as.numeric(Habitat) == min(as.numeric(Habitat))règle.

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 dans une colonne en fonction d'une autre colonne

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

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

Supprimer les doublons dans Excel en fonction d'une autre valeur de 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

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

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

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

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

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 où la valeur d'une autre colonne de la même ligne = 0

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

Supprimer les doublons dans une ligne en fonction de la valeur de la 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

Les pandas obtiennent des valeurs uniques dans une colonne en fonction d'une autre colonne python

Comment supprimer une partie de chaîne dans une colonne en fonction du contenu d'une autre colonne dans Oracle

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