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 :

Créer une moyenne par jour par lieux


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2019
    Messages : 4
    Par défaut Créer une moyenne par jour par lieux
    Bonjour, j'ai des données de température par lieu au pas 30minutes sur plusieurs semaines et j'aimerai faire une moyenne pour avoir seulement une journée de températures pour chaque lieu et l'avoir en colonne.

    Exemple:

    Lieu: Temperature: Date:
    Paris 20 10/06/2017 12:30:00
    Paris 21 10/06/2017 13:00:00
    ...
    Paris 11 14/10/2017 16:00:00
    Paris 11 14/10/2017 16:30:00
    Paris 12 14/10/2017 17:00:00
    Londres 16 10/06/2017 12:30:00
    Londres 15 10/06/2017 13:00:00
    ......
    Londres 8 14/10/2017 16:00:00
    Londres 9 14/10/2017 16:30:00
    Londres 8 14/10/2017 17:00:00
    Moscou 12 10/06/2017 12:30:00
    ............

    J'aimerai:

    Lieu Temperature à 00:00 Temperature à 00:30 Temperature à 01:00 Temperature à 01:30 Temperature à 02:00 ...........
    Paris
    Londres
    Moscou
    (une seule ville par ligne du coup)


    Merci beaucoup de votre aide

    PS: j'ai énormément de données, il me faudrait utiliser le package data.table je pense mais je ne sais pas trop comment bien l'utiliser.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    bonjour pour reformater votre dataframe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ## dataframe = df  avec colonnes "Lieu"        "Temperature" "Date"  
    df2 <- spread(df,key=Date,value = Temperature)
    je sais pas si c'est vraiment judicieux j'aurais garder le format en "longueur"
    désolé je ne connais pas le package data.table

  3. #3
    Membre à l'essai
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2019
    Messages : 4
    Par défaut
    Citation Envoyé par xavier-Pierre Voir le message
    bonjour pour reformater votre dataframe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ## dataframe = df  avec colonnes "Lieu"        "Temperature" "Date"  
    df2 <- spread(df,key=Date,value = Temperature)
    je sais pas si c'est vraiment judicieux j'aurais garder le format en "longueur"
    désolé je ne connais pas le package data.table
    Bonjour, merci pour votre réponse. Savez vous comment je peux faire une moyenne selon les heures aussi?

  4. #4
    Membre Expert
    Inscrit en
    Novembre 2009
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 707
    Par défaut Créer une moyenne par jour par lieu
    Bonjour,

    D'une façon générale, il est préférable de fournir un dataframe pour montrer la structure de vos données.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    > df <- data.frame(lieu=c("Paris","Paris","Paris","Paris","Paris",
    +                         "Londres","Londres","Londres","Londres","Londres",
    +                         "Moscou","Paris"),
    +                  temperature=c(20,21,11,11,12,16,15,8,9,8,12,0),
    +                  datetime.txt=c("10/06/2017 12:30:00",
    +                                 "10/06/2017 13:00:00",
    +                                 "14/10/2017 16:00:00",
    +                                 "14/10/2017 16:30:00",
    +                                 "14/10/2017 17:00:00",
    +                                 "10/06/2017 12:30:00",
    +                                 "10/06/2017 13:00:00",
    +                                 "14/10/2017 16:00:00",
    +                                 "14/10/2017 16:30:00",
    +                                 "14/10/2017 17:00:00",
    +                                 "10/06/2017 12:30:00",
    +                                 "10/01/2017 12:00:00"))
    > df$datetime <- strptime(df$date,"%d/%m/%Y %H:%M:%S")
    > str(df)
    'data.frame':   12 obs. of  4 variables:
     $ lieu        : Factor w/ 3 levels "Londres","Moscou",..: 3 3 3 3 3 1 1 1 1 1 ...
     $ temperature : num  20 21 11 11 12 16 15 8 9 8 ...
     $ datetime.txt: Factor w/ 6 levels "10/01/2017 12:00:00",..: 2 3 4 5 6 2 3 4 5 6 ...
     $ datetime    : POSIXlt, format: "2017-06-10 12:30:00" "2017-06-10 13:00:00" ...
    > df
          lieu temperature        datetime.txt            datetime
    1    Paris          20 10/06/2017 12:30:00 2017-06-10 12:30:00
    2    Paris          21 10/06/2017 13:00:00 2017-06-10 13:00:00
    3    Paris          11 14/10/2017 16:00:00 2017-10-14 16:00:00
    4    Paris          11 14/10/2017 16:30:00 2017-10-14 16:30:00
    5    Paris          12 14/10/2017 17:00:00 2017-10-14 17:00:00
    6  Londres          16 10/06/2017 12:30:00 2017-06-10 12:30:00
    7  Londres          15 10/06/2017 13:00:00 2017-06-10 13:00:00
    8  Londres           8 14/10/2017 16:00:00 2017-10-14 16:00:00
    9  Londres           9 14/10/2017 16:30:00 2017-10-14 16:30:00
    10 Londres           8 14/10/2017 17:00:00 2017-10-14 17:00:00
    11  Moscou          12 10/06/2017 12:30:00 2017-06-10 12:30:00
    12   Paris           0 10/01/2017 12:00:00 2017-01-10 12:00:00
    Citation Envoyé par loupon Voir le message
    Savez-vous comment je peux faire une moyenne selon les heures aussi ?
    Il n'est pas clair si vous souhaitez une moyenne par lieu, jour et heure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    > aggregate(temperature ~ lieu+format(datetime,"%d/%m/%Y %H"), data=df, mean)
          lieu format(datetime, "%d/%m/%Y %H") temperature
    1    Paris                   10/01/2017 12         0.0
    2  Londres                   10/06/2017 12        16.0
    3   Moscou                   10/06/2017 12        12.0
    4    Paris                   10/06/2017 12        20.0
    5  Londres                   10/06/2017 13        15.0
    6    Paris                   10/06/2017 13        21.0
    7  Londres                   14/10/2017 16         8.5
    8    Paris                   14/10/2017 16        11.0
    9  Londres                   14/10/2017 17         8.0
    10   Paris                   14/10/2017 17        12.0
    ou par lieu et heure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    > aggregate(temperature ~ lieu+format(datetime,"%H"), data=df, mean)
         lieu format(datetime, "%H") temperature
    1 Londres                     12        16.0
    2  Moscou                     12        12.0
    3   Paris                     12        10.0
    4 Londres                     13        15.0
    5   Paris                     13        21.0
    6 Londres                     16         8.5
    7   Paris                     16        11.0
    8 Londres                     17         8.0
    9   Paris                     17        12.0
    Vous pouvez ensuite utiliser la fonction tidyr:::spread() indiquée par xavier-Pierre pour transposer les données.

    Cordialement,

  5. #5
    Membre à l'essai
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2019
    Messages : 4
    Par défaut
    Bonjour mgdondon,

    Je ne savais pas qu'il fallait faire une data frame pour expliquer son problème, je le ferai à l'avenir merci.

    Merci beaucoup c'est exactement la fonction dont j'avais besoin !
    J'avais bien besoin de la derniere, par lieu et heure merci.

    Bien cordialement

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

Discussions similaires

  1. Problème pour créer une illumination par dôme de lumière
    Par m-matthieu dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 09/11/2006, 13h54
  2. Réponses: 5
    Dernier message: 17/07/2006, 18h34
  3. Créer une page par image ?
    Par Eliness dans le forum Langage
    Réponses: 10
    Dernier message: 01/01/2006, 17h34
  4. [VB.NET]Créer une instance par page
    Par Dnx dans le forum ASP.NET
    Réponses: 20
    Dernier message: 31/10/2005, 13h22
  5. effectuer une moyenne par rapport à un champ
    Par djejackk dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/05/2005, 11h59

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