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 :

Afficher les noms des maxima d'un tapply


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 8
    Par défaut Afficher les noms des maxima d'un tapply
    Bonjour,

    J'ai un jeu de données comportant des années, des mois, des jours et des débits...

    J'aimerais savoir pour chaque année, lors de quel mois on a pu observer le plus fort débit !

    J'ai commencé par faire un tapply pour chercher le maximum de chaque année : tapply(data$Q,data$Year,max,na.rm=T), data$Q correspondant aux débits.

    Donc il m'affiche bien le débit maximum pour chaque année, mais maintenant je suis bloquée pour trouver lors de quel mois ce fort débit a eu lieu...

    Merci de votre aide.

    Jade

  2. #2
    Membre chevronné
    Homme Profil pro
    MCU
    Inscrit en
    Juillet 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : MCU
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2010
    Messages : 185
    Par défaut
    Bonsoir,

    Si vous voulez récupérer toute l'info et sauf erreur, un truc dans ce genre là peut faire l'affaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    test <- lapply(unique(data$Year), function(x) {
     tempbase <- data[which(data$Year == x), ]
     return(tempbase[which(tempbase$Q == max(tembase$Q)), ])
    }
    test <- do.call(rbind, test)
    HTH

    Vincent

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 8
    Par défaut
    Bonjour,

    Merci de votre réponse, mais le tempbase <- data[which(data$Year == x) ne marche pas... j'ai le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur dans `[.data.frame`(dataN, which(data$Year == x)) : 
      undefined columns selected

  4. #4
    Membre éprouvé
    Inscrit en
    Mai 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 74
    Par défaut
    J'ai pas testé mais je pense que ça devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ## tu récupères l'index de chaque mois pour chaque année
    tapply(data$Q, data$Year, which.max)
    Sinon si tu nous montres à quoi ressemble ton jeu de données en structure ça sera plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    str(data)
    head(data, 24)

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 8
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    > str(dataN)
    'data.frame':   15341 obs. of  5 variables:
     $ Year   : int  1967 1967 1967 1967 1967 1967 1967 1967 1967 1967 ...
     $ Month  : int  1 1 1 1 1 1 1 1 1 1 ...
     $ Day    : int  1 2 3 4 5 6 7 8 9 10 ...
     $ Q      : num  1.81 1.81 1.7 1.7 1.48 1.48 1.48 1.48 1.48 1.48 ...
     $ Qc.Code: logi  NA NA NA NA NA NA ...

    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
    23
    24
    25
    26
     > head(dataN, 24)
       Year Month Day     Q Qc.Code
    1  1967     1   1  1.81      NA
    2  1967     1   2  1.81      NA
    3  1967     1   3  1.70      NA
    4  1967     1   4  1.70      NA
    5  1967     1   5  1.48      NA
    6  1967     1   6  1.48      NA
    7  1967     1   7  1.48      NA
    8  1967     1   8  1.48      NA
    9  1967     1   9  1.48      NA
    10 1967     1  10  1.48      NA
    11 1967     1  11  1.48      NA
    12 1967     1  12  1.36      NA
    13 1967     1  13  1.28      NA
    14 1967     1  14  1.28      NA
    15 1967     1  15  1.28      NA
    16 1967     1  16  1.28      NA
    17 1967     1  17  1.28      NA
    18 1967     1  18  1.28      NA
    19 1967     1  19  1.28      NA
    20 1967     1  20 56.20      NA
    21 1967     1  21 72.00      NA
    22 1967     1  22 46.40      NA
    23 1967     1  23 23.80      NA
    24 1967     1  24 15.80      NA

    Grace à titi<- tapply(dataN$Q, dataN$Year, which.max), je recupère l'index des plus forts debits mais pas du mois correspondant...

  6. #6
    Membre éprouvé
    Homme Profil pro
    Analyste
    Inscrit en
    Février 2012
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste

    Informations forums :
    Inscription : Février 2012
    Messages : 62
    Par défaut
    Bonsoir,

    Je pense que ceci doit faire ce que vous cherchez à obtenir, testé avec les valeurs ci-dessus:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tapply(dataN$Q, dataN$Year,function(x) res <- dataN$Month[which.max(x)])
     
     
    1967 
       1
    Effectivement il renvoyait l'index. Cet index correspond à la ligne qui nous intéresse, reste à spécifier la colonne. Vous aviez presque tout!

    Bonne continuation et à bientôt

    Guinue

Discussions similaires

  1. Afficher les noms des colonnes d'une table
    Par witch dans le forum Requêtes
    Réponses: 10
    Dernier message: 07/10/2008, 13h25
  2. Afficher les noms des elements sur des item.
    Par Viscapon dans le forum NetBeans
    Réponses: 1
    Dernier message: 08/05/2008, 11h25
  3. Comment afficher les noms des personnes stockés ds un tableau?
    Par quaresma dans le forum Algorithmes et structures de données
    Réponses: 29
    Dernier message: 26/04/2008, 00h55
  4. Afficher les nom des tables d'une base de donnée
    Par newmar dans le forum Administration
    Réponses: 4
    Dernier message: 02/04/2008, 16h40
  5. [WD10] Afficher les noms des colonnes
    Par devalender dans le forum WinDev
    Réponses: 4
    Dernier message: 24/02/2006, 14h38

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