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 lignes et de levels


Sujet :

R

  1. #1
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut Suppression de lignes et de levels
    Bonjour,
    Je dispose du data.frame D1 suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [D1 = data.frame(Noms=c("Pierre","Paul","Jacques"), Age=c(42,34,19))
    D1
           Noms Age
    1     Pierre  42 
    2       Paul  34 
    3  Jacques  19 
    La commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     D1$Noms 
    [1] Pierre  Paul    Jacques
    Levels: Jacques Paul Pierre
    renvoie les levels associés à la colonne Noms.

    Je souhaite supprimer la ligne PAUL et le level qui lui est associé. La commande suivante supprime bien la ligne, mais pas le levels
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    D2 = D1[D1$Noms != "Paul",]
    D2
         Noms Age
    1    Pierre  42
    3 Jacques  19
    
    
    D2$Noms
    [1] Pierre  Jacques
    Levels: Jacques Paul Pierre
    
    Quelqu'un sait-il comment supprimer le levels PAUL dans D2 ?

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    Pour le moment, la fonction subset n'a pas de paramètre permettant de supprimer les niveaux des facteurs qui ne sont plus présents dans le data-frame obtenu.
    Du coup, une solution basée sur le développement d'une toute petite fonction est proposée ici : http://rwiki.sciviews.org/doku.php?i..._unused_levels

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut
    J'ai essayé la deuxième technique proposée par ton lien, l'utilisation de la libraire gdata.
    Ca fonctionne, bien que je ne comprenne pas bien ce qui ce passe.
    Mais la première méthode m'échappe également.

  4. #4
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour,

    Cette discussion m'a permis de découvrir que l'on pouvait utiliser drop pour des facteurs

    Ce que fait la première solution, c'est simplement équivalent à
    pour chaque variable (colonne) d'une data.frame.

    Exemple pour voir l'usage de l'argument optionnel drop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    > x <- factor(c("a", "b", "c"))
    
    > x
    [1] a b c
    Levels: a b c
    
    > x[c(1, 3)]
    [1] a c
    Levels: a b c
    
    > x[c(1, 3), drop=TRUE]
    [1] a c
    Levels: a c
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  5. #5
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 44
    Points : 49
    Points
    49
    Par défaut
    bonjour,
    Oui , c'est ce qui est utilisé dans mon dernier post sur la fusion de 2 modalités
    le drop permet d'actualiser les levels de la variable dans la base.

  6. #6
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Ce qui est dommage, c'est que drop=TRUE ait un autre sens dans les dataframes... Et que rien ne soit implémenté pour traiter de la sorte les facteurs composant les colonnes d'un dataframe.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  7. #7
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut
    Merci à tous de votre aide !

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

Discussions similaires

  1. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 17h27
  2. Suppression de lignes dans un fichier
    Par bubu dans le forum Linux
    Réponses: 2
    Dernier message: 13/01/2005, 10h36
  3. Dbgrid : Comment interdire Suppression de Ligne
    Par Francis dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/11/2004, 08h31
  4. Réponses: 4
    Dernier message: 02/07/2004, 19h14
  5. [VB.NET] Suppression de ligne dans un DataTable
    Par seemax dans le forum Windows Forms
    Réponses: 7
    Dernier message: 06/05/2004, 14h19

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