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 :

Extraire des lignes sous conditions


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Par défaut Extraire des lignes sous conditions
    Bonjour à tous !

    Je vous contacte après plusieurs tentatives infructueuses pour extraire des lignes sous conditions.
    Voilà la situation :

    J'ai un tableau contenant une colonne "chromosome", une colonne "position" et une colonne "valeur". Je voudrais récupérer la "position" pour la "valeur" maximale de chaque "chromosome". (Extraire la ligne valeur maximale pour le chromosome 1, puis pour le 2, le 3, etc...)

    Merci de votre aide !

  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 : 48
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Par défaut
    Bonjour.
    Il y a de nombreuses façons de le faire, l'une d'entre elles est avec le package dplyr, dont la logique est très proche du langage SQL. On y enchaîne des opérations (ici j'ai besoin d'un mutate pour créer une nouvelle colonne, d'un filter pour garder certaines lignes, d'un group_by pour que le maximum calculé ne soit pas au global des données mais par groupe de valeurs) par un opérateur %>%.
    Dans l'exemple ci-dessous, on récupère les passagers les plus âgés du Titanic selon la classe à bord de laquelle ils voyageaient : a priori tu pourras facilement transposer à tes données génomiques.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    library(titanic)
    library(dplyr)
    titanic_train %>% 
      group_by(Pclass) %>% 
      mutate(max_age = max(Age, na.rm=T)) %>% 
      filter(Age == max_age)

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suède

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2018
    Messages : 40
    Par défaut problème
    Bonjour

    j'ai réaliser ce que vous avez expliquer cependant cela ne peut fonctionner car j'aimerai regrouper mes valeurs selon un identifiant de type 10-4576 (exemple). Le logiciel le considère comme un facteur.
    Comment puis faire pour regrouper ainsi le meilleur temps de chaque cheval (min de sec.km) ?
    Mon fichier se compose de l'identifiant du cheval, le time et d'autres informations.
    Pour chaque cheval je possède plusieurs courses
    ID                      time                 sex               birth year          gallop 
    10-4567            76,2                   S                   2003                  1
    10-4567            78                      S                   2003                  0
    10-4567            75                       S                   2003                  1
    14-8790            79,4                    V                   2006                  1
    15-9758            73,8                     H                   2005                  0
    15-9758            75,6                     H                   2005                  0
    
    J'aimerai donc récupérer pour chaque cheval la ligne entière correspondant a son meilleur temps (minimum)
    soit exemple
    ID                      time                 sex               birth year          gallop 
    10-4567            75                       S                   2003                  1
    14-8790            79,4                    V                   2006                  1
    15-9758            73,8                     H                   2005                  0
    j'utilise ce code mais cela ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    vitessereel3 %>%              #mon fichier 
        + group_by(vitessereel3$ID) %>%     #grouper par identifiant
        + mutate(bestime = min(vitessereel3$time, na.rm=T)) %>%            #obtenir le meilleur temps 
        + filter(bestime == bestime)

    Pourriez vous m'éclairer s'il vous plaît ?
    merci

  4. #4
    Membre chevronné
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    vitessereel3 %>%              #mon fichier 
        + group_by(vitessereel3$ID) %>%     #grouper par identifiant
        + filter(time == min(time))
     
    # ou 
    vitessereel3 %>%              #mon fichier 
        group_by(vitessereel3$ID) %>%     #grouper par identifiant
        top_n(-1, time)
    Après il te faut peut-être modifier le code car celui-ci va renvoyer toutes les lignes avec un temps minimal, si pour le même cheval il y en a plusieurs alors tu les verras toutes.
    Avant de faire tourner ce code il te faut t'assurer que la variable time est au format numeric, ce qui n'est peut-être pas le cas ici.

    cdlt

Discussions similaires

  1. [XL-2007] Code VBA pour supprimer des lignes sous condition - problème
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2011, 09h09
  2. [XL-2003] déplacement des lignes sous conditions
    Par tazko dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/03/2011, 19h57
  3. Masquer des lignes sous condition
    Par linousxm dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2010, 13h19
  4. copier des lignes sous conditions (dans 2 colonnes différentes)
    Par olive08 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 12/10/2007, 14h44
  5. Suppression des lignes sous condition multiple
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/06/2007, 16h23

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