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 :

Commande subset et sélection d'un data frame


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Par défaut Commande subset et sélection d'un data frame
    Bonjour à tous,

    Je débute avec le langage R et je souhaiterais faire quelque chose de très simple.

    Je dispose d'un data frame de mesures associées à une date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Date, Site1, Site2, Site3, ....., Site20
    01/01/2012, NA, NA, 50,18,....3
    02/01/2012, NA, NA, 10, 3,.....2
    03/01/2012, 11,12,15,......1
    etc...
    Je souhaiterais constituer un sous-tableau pour une condition vérifiée, par exemple, qu'une des mesures soit supérieure à 100 (entre autre, sélectionner la ligne si une des mesures est supérieure à 100)
    J'utilise la commande subset :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data_seuil_100=subset(data, Site1>100 | Site2>100 | Site2>100 ......Site20>100)
    Comment l'écrire en raccourci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data_seuil_100=subset(data, data[,2:20]>100)
    Mais cela ne marche pas....il faut peut-être écrire une boucle ?

    Merci de vos conseils éclairés.

  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 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Voici une façon de faire avec apply, mais il en existe surement d'autres :
    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
    > df <- data.frame(date = c("01/01/2012", "02/01/2010", "03/01/2010"), Site1 = c(NA, 10, 3), Site2 = c(3, 26, NA), Site3 = c(22, NA, NA), Site4 = c(19, 7, 2))
    > df
            date Site1 Site2 Site3 Site4
    1 01/01/2012    NA     3    22    19
    2 02/01/2010    10    26    NA     7
    3 03/01/2010     3    NA    NA     2
    > df2 <- df[apply(df[c("Site1", "Site2", "Site3", "Site4")], 1 ,function(x) any(x > 20)),]
    > df2
             date Site1 Site2 Site3 Site4
    1  01/01/2012    NA     3    22    19
    2  02/01/2010    10    26    NA     7
    NA       <NA>    NA    NA    NA    NA
    > df3 <- subset(df2, !is.na(df2$date))
    > df3
            date Site1 Site2 Site3 Site4
    1 01/01/2012    NA     3    22    19
    2 02/01/2010    10    26    NA     7
    >
    Dans mon exemple, je n'ai pris que 4 sites, mais dans le apply, vous pouvez en mettre autant que vous souhaitez.
    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
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Par défaut
    Bonjour,

    Merci de votre réponse, c'est exactement ce qu'il me fallait,

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

Discussions similaires

  1. Sélection d'un data frame
    Par orland dans le forum R
    Réponses: 3
    Dernier message: 13/11/2012, 13h03
  2. Dupliquer les lignes d'une data. frame
    Par manoir dans le forum R
    Réponses: 2
    Dernier message: 09/07/2009, 18h25
  3. Mean par colonne dans une data frame
    Par manoir dans le forum R
    Réponses: 3
    Dernier message: 19/06/2009, 11h06
  4. Trier une data frame
    Par manoir dans le forum R
    Réponses: 4
    Dernier message: 28/04/2009, 16h29
  5. Réponses: 2
    Dernier message: 14/11/2008, 14h53

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