IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Supprimer une ligne en double


Sujet :

R

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Supprimer une ligne en double
    Bonjour,

    Je ne parvient pas à résoudre un problème.

    J'ai un dataframe qui se présente de la manière suivante :
    il s'agit d'un tableau de type présence absence.


    Identifiant Lieu Valeur
    3 Lieu1 1
    3 Lieu2 1
    3 Lesdeux 1
    5 Lieu2 1
    2 Lieu1 1
    2 Lieu2 1
    2 Lesdeux 1

    Le 1 signifie présence.

    Mon objectif est de faire un plot qui m'indique quand mon élément sera présent dans le Lieu1 uniquement, dans mon lieu2 uniquement et enfin dans les deux.
    Pour cela, j'aimerai supprimer lorsque l'identifiant est le même (présent 3 fois) les lignes Lieu1 et Lieu2 car il sera déjà visualisable dans lesDeux.
    Je ne sais pas si je me suis bien exprimé.
    Ma première idée serai de faire un ifelse mais je ne sais pas comment préciser un élément qui se répète trois fois.

    J'espère que vous pourrez m'aider
    Merci par avance.

  2. #2
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour.
    Est-ce que les fonctions duplicated et gdata::duplicated2 pourraient t'aider à résoudre le problème ?
    Il y a aussi la possibilité de réorganiser les données avec reshape2::dcast ou tidyr::pivot_wider pour avoir une ligne par identifiant et une colonne par lieu, le ifelse serait alors plus simple à écrire.
    Bon courage.
    Olivier

  3. #3
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Sélection
    Bonjour,

    Une autre approche :

    • recoder la variable Valeur (Lieu1 -> Valeur = 1, Lieu2 -> Valeur = 2, Lesdeux -> Valeur = 3)
    • sommer les valeurs par Identifiant (fonction agregate)
    • si Valeur > 3 alors Valeur = 3


    Cordialement,

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Supprimer des éléments dans certaines lignes
    Dans mon script pour pouvoir faire mes plots j'ai eu une étape ou j'ai regroupé mes colonnes Lieu1, Lieu2... sous une seule colonne Lieu.
    L'étape était la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Compilation_long<-Compilation %>% gather(Lieu,Valeur,-Identifiant)
    J'était partie du principe que c'était plus simple de faire une boucle et filtrer mes lignes après.
    J'avais un dataframe qui se présentais comme ça avant :

    Identifiant Lieu1 Lieu2 LesDeux
    1 1 1 1
    2 1 0 0
    3 0 1 0
    5 1 1 1
    6 0 1 0

    Faire des modifications à cette étape du script m'a parut une bonne solution.
    J'ai donc simplement supprimer les 1 dans Lieu1 et Lieu2 lorsqu'il y avait 1 dans somme et ça m'a permis de retirer le problème à sa source.

    J'ai utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Compilation$Lieu1 <- ifelse(Compilation$lesDeux ==1 & Compilation$Lieu1 == 1,0,Compilation$Lieu1)
    Compilation$Lieu2 <- ifelse(Compilation$lesDeux ==1 & Compilation$Lieu2 == 1,0,Compilation$Lieu2)
    Vos solutions semblent très bien correspondre à ce que je souhaitais faire. Merci beaucoup de votre aide je suis certaine que ça me servira pour mes prochains scripts et à d'autres je l'espère aussi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Total erroné après double-clic pour supprimer une ligne de ListBox
    Par macjs dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 29/07/2020, 11h07
  2. [XL-2016] Supprimer une ligne dans un tableau par double clic
    Par cot72 dans le forum Excel
    Réponses: 1
    Dernier message: 10/09/2019, 18h09
  3. supprimer une ligne d'un tableau html par double click
    Par s.rais dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/10/2013, 11h30
  4. Réponses: 14
    Dernier message: 22/09/2011, 16h11
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo