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 :

Suppression de colonne avec une expression régulière


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 Suppression de colonne avec une expression régulière
    Bonjour,

    Je viens d'écrire un code en R mais celui-ci n'est pas optimiser. J'aimerai bien une petite aide extérieure.

    J'ai un data.frame avec des centaines de colonnes, parmi celles-ci certaines sont simplement des contrôles je n'en ai donc pas besoin dans mon analyse.

    J'ai donc décidé de les supprimer manuellement. J'ouvre mon data.frame je regarde le nom de chacun et je les copie colle dans mon script.

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TAB2 <- subset( select=-c(Control_A,Control_6_2B, Droit_Control_B),TAB1)
    Chaque colonne de controle n'a pas le même nom ce qui complique la chose.
    J'aimerai utiliser une expression régulière pour supprimer toutes les colonnes comprenant le mot controle :

    J'ai donc essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TAB2 <- subset( select=-c("*.Control.*"),TAB1)
    Or ça ne fonctionne pas et le message d'erreur suivant s'affiche :
    invalid argument to unary operator
    Je suppose donc que je ne peut pas utiliser une expression régulière avec cette fonction.

    Pourriez-vous me donner des éléments de réponses ? Je ne comprend pas vraiment comment régler se problème ?

    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 : 47
    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.
    Je ne suis pas sûr qu'une expression régulière puisse commencer par une étoile. Celle-ci indique le degré de répétition de l'élément qui précède : difficile donc que ce soit le premier terme de l'expression.
    Cela dit, dans des fonctions comme grep, pas besoin d'utiliser des jokers comme .* ; avec du R base on peut directement faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TAB1[,-grep("controle", colnames(TAB1))]

  3. #3
    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
    Bonjour,

    D'accord je pensais que cela signifiais "qui possèdent n'importe quel caractère avant controle et n'importe quel caractère après"

    Votre solution me convient très bien.

    Merci beaucoup de votre aide.

    Bonne continuation.

  4. #4
    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 : 47
    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
    Citation Envoyé par elgateau Voir le message
    D'accord je pensais que cela signifiais "qui possèdent n'importe quel caractère avant controle et n'importe quel caractère après"
    Pour écrire ça on écrirait.* signifie "n'importe quoi de longueur inconnue" ; le ^ marque le début et le $ la fin de la chaîne.
    Mais si on indique juste "controle" c'est aussi une expression régulière qui indique qu'il peut y avoir le texte "controle" n'importe où dans la valeur. On n'a besoin des ^, $ et du remplissage .* que si on veut se situer plus précisément dans la valeur.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/05/2012, 17h23
  2. Problème avec une expression régulière ?
    Par MaTHieU_ dans le forum Delphi
    Réponses: 1
    Dernier message: 28/04/2007, 18h50
  3. [RegEx] problème avec une expression régulière
    Par sissi25 dans le forum Langage
    Réponses: 2
    Dernier message: 19/04/2007, 09h12
  4. [JMeter] Extraction avec une expression régulière
    Par LittleBean dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 04/04/2007, 17h39
  5. Problème avec une expression régulière
    Par Darkroro dans le forum Langage
    Réponses: 7
    Dernier message: 09/10/2006, 12h13

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