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 :

sélection multiple sur un dataframe


Sujet :

R

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2015
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2015
    Messages : 101
    Points : 70
    Points
    70
    Par défaut sélection multiple sur un dataframe
    bonjour à tous,
    j'ai un dataframe de plus de 200 lignes et 32 colonnes, et je souhaite sélectionner un certains nombre de lignes et de colonnes afin de les utiliser pour des analyses statistiques, le dataframe se présente en partie comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         mois station       lat      long      r    perim      cov             mass           B1
    1     may  b          33°55'29" 01°13'11" 146    in        70.0000000   2135.996000   14.34502
    2     may  b          33°55'32" 01°13'12" 147    in        63.4615385   1517.925768   14.14518
    3     may  b          33°55'51" 01°13'06" 150    in        73.2057416   392.045260     14.00122
    et le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    all<-subset(basedonnee, mois=="may" | mois=="march", select=c(2,17:32))
    ce dernier marche très bien, mais là où ça se gatte c'est lorsque je rajoute un argument à ce code pour sélectionner certaines lignes en fonction de leurs index (la première colonne du dataframe), voici mes codes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    allstation_may<-subset(basedonnee, mois=="may" | mois=="march"|basedonnee[65:77] , select=(17:32))
    Error in `[.data.frame`(basedonnee, 65:77) : colonnes non définies sélectionnées
    j'ai alors tenté de sélectionner ces lignes en fonction de la colonne r qui indique le numéros des relevés, j'ai essayé pleins de codes qui donnent un résultats pour certains mais ce n'est pas celui que je cherche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    allstation_may<-subset(basedonnee, mois=="may" | mois=="march"| r==c(186:198), select=(17:32))
    Warning message:
    In r == c(186:198) :
      longer object length is not a multiple of shorter object length
    > allstation_may<-subset(basedonnee, mois=="may" | mois=="march"| r=="186:198", select=(17:32)) #celui-ci donne un résultat non souhaité
     
    > allstation_may<-subset(basedonnee, mois=="may" | mois=="march"| r=="[186:198]", select=(17:32))#idem 
     
    > allstation_may<-subset(basedonnee, mois=="may" | mois=="march"| r==c(186:198), select=(17:32))
    Warning message:
    In r == c(186:198) :
      longer object length is not a multiple of shorter object length
    ce que je souhaite c'est de sélectionner tous les lignes du mois de may, du mois de march plus les ligne qui vont de 65:77 qui correspondent aux relevés qui vont de 186:198

    inutile de vous dire que j'ai essayé pleins d'autres arguments qu'il est inutile de détailler ici mais là, je suis à court d'idée et je fait appel à vous pour m'aider.

    merci.

  2. #2
    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 multiple sur un dataframe
    Bonjour,

    Vous pouvez utiliser l'opérateur %in% : r %in% 186:198.

    Cordialement,

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2015
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2015
    Messages : 101
    Points : 70
    Points
    70
    Par défaut
    Bonjour Magdondon,

    ton code me donne le même résultat que celui-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    > allstation_may<-subset(basedonnee, mois=="may" | mois=="march"| r=="186:198", select=(17:32))
    # et ce n'est toujours pas le résultat que je cherche

  4. #4
    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 multiple sur un dataframe
    Bonjour,

    Petit test avec le fichier ci-joint :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    > df <- read.csv("D:/temp/test.txt")
    > subset(df, mois=="may" | mois=="march" | r %in% 186:198)
        mois   r
    1    may 176
    2    may 177
    3    may 178
    4  march 179
    5  march 180
    6  march 181
    11 april 186
    12 april 187
    13 april 188
    14 april 189
    15 april 190
    16 april 191
    17 april 192
    18 april 193
    19  june 194
    20  june 195
    21  june 196
    22  june 197
    23  june 198
    ce qui ne donne pas le même résultat que votre code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    > subset(df, mois=="may" | mois=="march" | r=="186:198")
       mois   r
    1   may 176
    2   may 177
    3   may 178
    4 march 179
    5 march 180
    6 march 181
    Si ça ne marche pas pour vous, il faudrait fournir plus d'informations et quelques données.

    Cordialement,
    Fichiers attachés Fichiers attachés

  5. #5
    Membre régulier
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2015
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2015
    Messages : 101
    Points : 70
    Points
    70
    Par défaut
    au fait le numéro de relevés de la colonne r se répètes
    tu a quelque chose de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
        mois   r
    1  may   176
    2  may   177
    3  may   178
    4  march 179
    5  march 180
    6  march 181
    11 april 176
    12 april 177
    13 april 178
    14 april 179
    15 may   190
    16 may   191
    17 may   192
    18 may   193
    19 may   194 
    20 april 190
    21 april 191
    22 april 192
    dans ce dataframe je souhaite par exemple avoir les mois de may et march mais exclure les relevés 192 à 194 pour le mois de may.

    au finale j'aurais ce résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     mois   r
    1    may 176
    2    may 177
    3    may 178
    4  march 179
    5  march 180
    6  march 181
    15 may  190
    16 may  191
    excuse moi j'ai mal exprimé ce que je souhait obtenir. et de ce fait mon code n'est pas du tout bon.

  6. #6
    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 multiple sur un dataframe
    Bonjour,

    J'ai modifié le fichier pour correspondre à votre première liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    > df <- read.csv("D:/temp/test.txt")
    > df
        mois   r
    1    may 176
    2    may 177
    3    may 178
    4  march 179
    5  march 180
    6  march 181
    7  april 176
    8  april 177
    9  april 178
    10 april 179
    11   may 190
    12   may 191
    13   may 192
    14   may 193
    15   may 194
    16  june 190
    17  june 191
    18  june 192
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    > subset(df, (mois=="may" | mois=="march" ) & !(r %in% 192:194))
        mois   r
    1    may 176
    2    may 177
    3    may 178
    4  march 179
    5  march 180
    6  march 181
    11   may 190
    12   may 191
    Cordialement,

  7. #7
    Membre régulier
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2015
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Octobre 2015
    Messages : 101
    Points : 70
    Points
    70
    Par défaut
    Ohh merci Magdondon, au fait le problème se situé au niveau des parenthèses de (mois=="may"|mois=="march").

    encore merci et à bientôt.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/02/2017, 13h39
  2. Réponses: 2
    Dernier message: 20/06/2016, 10h42
  3. Réponses: 2
    Dernier message: 17/10/2012, 08h53
  4. [XL-2003] Sélection multiple sur des feuilles différentes
    Par Sibuxian dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/06/2010, 09h43
  5. Réponses: 4
    Dernier message: 10/12/2007, 22h10

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