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 :

Extraction de certaines lignes d'un data frame


Sujet :

R

  1. #1
    Membre du Club
    Homme Profil pro
    technicien
    Inscrit en
    Mars 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : technicien
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2015
    Messages : 24
    Points : 43
    Points
    43
    Par défaut Extraction de certaines lignes d'un data frame
    Bonjour,

    je suis tombé sur un petit piège que je ne sais pas éviter: je voudrais extraire des lignes d'un data frame selon un critère donné (texte, en utilisant subset, which ou grep), le piège étant que le critère donné peut contenir des parenthèses...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    df <- data.frame(nom = c("a","b","c","d","e","f"), categorie = c("cat1", "cat1", "cat2 (expression)", "cat2 (expression)", "cat3", "cat3"))
    du coup si je veux extraire les lignes dont la catégorie vaut "cat1" OU "cat2 (expression)" je n'y arrive pas. Avec "cat1" OU "cat3" pas de problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    df2 <- df [grep(paste(c("cat1", "cat3"), collapse = "|"), df$categorie, fixed = FALSE),]
    fonctionne grâce à l'argument fixed = FALSE. par contre si le pattern a chercher contient une parenthèse cet argument me fout la zone...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    df2 <- df [grep(paste(c("cat1", "cat2 (expression)", collapse = "|"), df$categorie, fixed = FALSE),]
    ne fonctionne pas...

    Auriez vous une idée pour contourner ce piège?

    merci beaucoup!

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Janvier 2012
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 325
    Points : 888
    Points
    888
    Par défaut
    Tu utilises une expression régulière avec grep, les caractères "(" et ")" étant des caractères spéciaux pour les expressions régulières il faut que tu les échappes (en ajoutant "\\" devant).

    Cependant il n'y a que peu d'intérêt à utiliser grep pour un cas aussi simple, vu que %in% suffit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    df[ df$categorie %in% c("cat1", "cat2 (expression)") ,]

  3. #3
    Membre du Club
    Homme Profil pro
    technicien
    Inscrit en
    Mars 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : technicien
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2015
    Messages : 24
    Points : 43
    Points
    43
    Par défaut
    oh la la! comment j'ai pu rater ça... c'est navrant!

    Merci Theta, au top!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/03/2015, 12h48
  2. Tri d'un data.frame par numéro de ligne
    Par MMDM12 dans le forum R
    Réponses: 3
    Dernier message: 23/05/2012, 11h37
  3. Selection ligne objet data.frame
    Par Isabella83 dans le forum R
    Réponses: 2
    Dernier message: 12/07/2011, 10h49
  4. Selection ligne data.frame
    Par Isabella83 dans le forum R
    Réponses: 6
    Dernier message: 22/06/2011, 16h58
  5. Dupliquer les lignes d'une data. frame
    Par manoir dans le forum R
    Réponses: 2
    Dernier message: 09/07/2009, 19h25

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