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 :

Moyenne par Date par modalité de facteurs


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Agronome
    Inscrit en
    Décembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Gers (Midi Pyrénées)

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

    Informations forums :
    Inscription : Décembre 2017
    Messages : 12
    Par défaut Moyenne par Date par modalité de facteurs
    Bonjour,

    Mon dataframe se présente comme ceci :
    A = Variable qualitative, 10 modalités (a1 à a10)
    B = Variable qualitative se rapportant à A, 2 à 30 modalités selon A.
    A_B = concaténation de A et B
    T = Variable temporelle (t1 à t50)
    X = variable quantitative. Mesure répétée à chaque ti, se rapportant à A et B
    Y = idem X mais autre mesure


    Je souhaite obtenir pour chaque A, une moyenne de X et de Y par TT. La moyenne s'effectue grâce à B. Je veux stocker les résultats dans un nouveau Dataframe.

    J'ai commencé à écrire le code suivant qui ne fonctionne pas. Quelqu'un peut-il m'aider à corriger ? Merci d'avance !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for (i in levels (Dataframe$A)){
    + for (j in levels (Dataframe$T)){
    + Temp <- Dataframe[(Dataframe$A==Dataframe$A[i])&(Dataframe$T==Dataframe$T[j])&(Dataframe$X==DataframeX[j])&(Dataframe$Y==Dataframe$Y[j]))
    +DF$A [i] <- Temp$A
    +DF$T[j] <- Temp$T
    + DF$MoyX [j] <- mean (Temp$X, na.rm=TRUE) 
    +DF$MoyY[j] <-mean (Temp$Y, na.rm = TRUE)

  2. #2
    Membre expérimenté
    Homme Profil pro
    Data scientist
    Inscrit en
    Février 2017
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data scientist
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2017
    Messages : 211
    Par défaut
    Bonjour,

    J'ai pas trop compris votre problématique. J'ai fais ce que j'ai compris, dis moi si c'est ce que tu cherches?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    install.packages("sqldf")
     
    library(sqldf) 
     
    res_X = sqldf (" select A , B, A_B, T, avg(X) from ta_data group by A , B, A_B, T"  ) 
    res_Y = sqldf (" select A , B, A_B, T, avg(Y) from ta_data group by A , B, A_B, T"  )

  3. #3
    Membre averti
    Femme Profil pro
    Agronome
    Inscrit en
    Décembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Gers (Midi Pyrénées)

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

    Informations forums :
    Inscription : Décembre 2017
    Messages : 12
    Par défaut
    Merci pour votre aide. J'essaie de reformuler mon pb

    Voici un extrait du dataframe :

    A B T X Y
    A1 B1 15-mars 0,40 0,84
    A1 B1 25-mars 0,95 0,12
    A1 B1 03-avr 0,44 0,58
    A1 B1 05-mai 0,50 0,27
    A1 B1 15-juin 0,91 0,79
    A1 B2 25-mars 0,32 0,02
    A1 B2 03-avr 0,30 0,01
    A1 B2 05-mai 0,62 0,98
    A1 B2 15-juin 0,93 0,87
    A1 B3 15-mars 0,21 0,29
    A1 B3 25-mars 0,62 0,51
    A1 B3 03-avr 0,90 0,79
    A1 B3 05-mai 0,06 0,66
    A1 B3 15-juin 0,78 0,11
    A2 Bj 12-mars 0,61 0,14

    Ce que je cherche à faire c'est par modalité de A, moyenner pour une date donnée (T) les valeurs de X (et Y) que prennent chaque modalité B.
    C'est à dire obtenir quelque chose de cette forme :

    A T X Y
    A1 15-mars 0,38 0,36
    A1 25-mars 0,57 0,52
    A1 03-avr 0,75 0,31
    A1 05-mai 0,61 0,32
    A1 15-juin 0,29 0,43
    A2 12 mars

    Est ce que c'est plus clair ?
    Merci par avance

  4. #4
    Membre chevronné
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Par défaut
    Bonjour,

    une possibilité :aggregate(cbind(X, Y) ~ A + T, tab, mean).

    Sinon j'aime bien le package dplyr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    library(dplyr)
    tab %>% group_by(A, T) %>% summarise_if(is.numeric, funs(mean))
    cdlt

  5. #5
    Membre averti
    Femme Profil pro
    Agronome
    Inscrit en
    Décembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Gers (Midi Pyrénées)

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

    Informations forums :
    Inscription : Décembre 2017
    Messages : 12
    Par défaut
    Merci pour votre aide !

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

Discussions similaires

  1. [XL-2013] Moyenne du nombre de valeurs par date
    Par bolide7 dans le forum Excel
    Réponses: 3
    Dernier message: 27/12/2014, 12h14
  2. Affichage date par date
    Par marc73450 dans le forum Pentaho
    Réponses: 9
    Dernier message: 13/03/2013, 09h23
  3. [MySQL] Moyenne de lignes par date
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 20/03/2012, 10h16
  4. [MCD] Nombre d'heures travaillées par mois par année par compte
    Par Tidus159 dans le forum Schéma
    Réponses: 9
    Dernier message: 11/03/2011, 12h20
  5. Etat regroupement Par date par jour
    Par bobosh dans le forum IHM
    Réponses: 2
    Dernier message: 01/08/2008, 09h03

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