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 :

Convertir les donnees d'une colonne en format Date


Sujet :

R

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Convertir les donnees d'une colonne en format Date
    Bonjour a tous,

    J'ai un tableau de données a double entrée contenant les prix horaires de l'électricité sur 10 jours.

    10 lignes, chacune correspond a un jour.
    24 colonnes chacune correspond a une durée d'une heure (24 prix par jour)
    + 1 colonne a gauche contenant les dates.
    Les dates sont écrites sous la forme "17/11/2009".
    cf. fichier excel

    J'ai extrait la première colonne avec les dates
    J'ai défini un vecteur de 24 entiers pour représenter les 24 plages horaires
    J'ai fusionne les deux vecteurs comme ceci:
    J'obtiens un tableau de 24 lignes (24 heures) par 10 colonnes (10 jours)
    Les données de Z sont de la forme "24 08/11/2009" i.e Heure jour/mois/année

    Je voudrai ensuite convertir les données de Z en format Dates.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    as.Date('Z', format='%H %d/%m/%Y)
    pour ensuite les insérer dur l'axe des abscisses pour tracer une série temporelle avec les prix de l'électricité.

    J'utilise donc l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    as.Date('Z', format='%H %d/%m/%Y')
    mais cela me renvoie NA
    POURQUOI???

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Je pense avoir partiellement resolu le probleme en utilisant la fonction
    strptime.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    tt=strptime(Z,"%H %d/%m/%Y")
    X=data[,1]
    Y=1:24
     
    Z=outer (Y,X,paste)


    J'ai réussi a convertir Z au format voulu dans tt : année, mois, jour, Heure.
    comme par exemple: 2009-11-17 01:00:00


    Sauf que pour les données correspondant a la 24e heure j'obtiens 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    [1] "2009-11-17 01:00:00" "2009-11-17 02:00:00" "2009-11-17 03:00:00" "2009-11-17 04:00:00" "2009-11-17 05:00:00"
      [6] "2009-11-17 06:00:00" "2009-11-17 07:00:00" "2009-11-17 08:00:00" "2009-11-17 09:00:00" "2009-11-17 10:00:00"
     [11] "2009-11-17 11:00:00" "2009-11-17 12:00:00" "2009-11-17 13:00:00" "2009-11-17 14:00:00" "2009-11-17 15:00:00"
     [16] "2009-11-17 16:00:00" "2009-11-17 17:00:00" "2009-11-17 18:00:00" "2009-11-17 19:00:00" "2009-11-17 20:00:00"
     [21] "2009-11-17 21:00:00" "2009-11-17 22:00:00" "2009-11-17 23:00:00" NA                    "2009-11-16 01:00:00"
     [26] "2009-11-16 02:00:00" "2009-11-16 03:00:00" "2009-11-16 04:00:00" "2009-11-16 05:00:00" "2009-11-16 06:00:00"
     [31] "2009-11-16 07:00:00" "2009-11-16 08:00:00" "2009-11-16 09:00:00" "2009-11-16 10:00:00" "2009-11-16 11:00:00"
     [36] "2009-11-16 12:00:00" "2009-11-16 13:00:00" "2009-11-16 14:00:00" "2009-11-16 15:00:00" "2009-11-16 16:00:00"
     [41] "2009-11-16 17:00:00" "2009-11-16 18:00:00" "2009-11-16 19:00:00" "2009-11-16 20:00:00" "2009-11-16 21:00:00"
     [46] "2009-11-16 22:00:00" "2009-11-16 23:00:00" NA                    "2009-11-15 01:00:00" "2009-11-15 02:00:00"
     [51] "2009-11-15 03:00:00" "2009-11-15 04:00:00" "2009-11-15 05:00:00" "2009-11-15 06:00:00" "2009-11-15 07:00:00"
     [56] "2009-11-15 08:00:00" "2009-11-15 09:00:00" "2009-11-15 10:00:00" "2009-11-15 11:00:00" "2009-11-15 12:00:00"
     [61] "2009-11-15 13:00:00" "2009-11-15 14:00:00" "2009-11-15 15:00:00" "2009-11-15 16:00:00" "2009-11-15 17:00:00"
     [66] "2009-11-15 18:00:00" "2009-11-15 19:00:00" "2009-11-15 20:00:00" "2009-11-15 21:00:00" "2009-11-15 22:00:00"
     [71] "2009-11-15 23:00:00" NA                    "2009-11-14 01:00:00" "2009-11-14 02:00:00" "2009-11-14 03:00:00"
     [76] "2009-11-14 04:00:00" "2009-11-14 05:00:00" "2009-11-14 06:00:00" "2009-11-14 07:00:00" "2009-11-14 08:00:00"
     [81] "2009-11-14 09:00:00" "2009-11-14 10:00:00" "2009-11-14 11:00:00" "2009-11-14 12:00:00" "2009-11-14 13:00:00"
     [86] "2009-11-14 14:00:00" "2009-11-14 15:00:00" "2009-11-14 16:00:00" "2009-11-14 17:00:00" "2009-11-14 18:00:00"
     [91] "2009-11-14 19:00:00" "2009-11-14 20:00:00" "2009-11-14 21:00:00" "2009-11-14 22:00:00" "2009-11-14 23:00:00"
     [96] NA                    "2009-11-13 01:00:00" "2009-11-13 02:00:00" "2009-11-13 03:00:00" "2009-11-13 04:00:00"
    [101] "2009-11-13 05:00:00" "2009-11-13 06:00:00" "2009-11-13 07:00:00" "2009-11-13 08:00:00" "2009-11-13 09:00:00"
    [106] "2009-11-13 10:00:00" "2009-11-13 11:00:00" "2009-11-13 12:00:00" "2009-11-13 13:00:00" "2009-11-13 14:00:00"
    [111] "2009-11-13 15:00:00" "2009-11-13 16:00:00" "2009-11-13 17:00:00" "2009-11-13 18:00:00" "2009-11-13 19:00:00"
    [116] "2009-11-13 20:00:00" "2009-11-13 21:00:00" "2009-11-13 22:00:00" "2009-11-13 23:00:00" NA                   
    [121] "2009-11-12 01:00:00" "2009-11-12 02:00:00" "2009-11-12 03:00:00" "2009-11-12 04:00:00" "2009-11-12 05:00:00"
    [126] "2009-11-12 06:00:00" "2009-11-12 07:00:00" "2009-11-12 08:00:00" "2009-11-12 09:00:00" "2009-11-12 10:00:00"
    [131] "2009-11-12 11:00:00" "2009-11-12 12:00:00" "2009-11-12 13:00:00" "2009-11-12 14:00:00" "2009-11-12 15:00:00"
    [136] "2009-11-12 16:00:00" "2009-11-12 17:00:00" "2009-11-12 18:00:00" "2009-11-12 19:00:00" "2009-11-12 20:00:00"
    [141] "2009-11-12 21:00:00" "2009-11-12 22:00:00" "2009-11-12 23:00:00" NA                    "2009-11-11 01:00:00"
    [146] "2009-11-11 02:00:00" "2009-11-11 03:00:00" "2009-11-11 04:00:00" "2009-11-11 05:00:00" "2009-11-11 06:00:00"
    [151] "2009-11-11 07:00:00" "2009-11-11 08:00:00" "2009-11-11 09:00:00" "2009-11-11 10:00:00" "2009-11-11 11:00:00"
    [156] "2009-11-11 12:00:00" "2009-11-11 13:00:00" "2009-11-11 14:00:00" "2009-11-11 15:00:00" "2009-11-11 16:00:00"
    [161] "2009-11-11 17:00:00" "2009-11-11 18:00:00" "2009-11-11 19:00:00" "2009-11-11 20:00:00" "2009-11-11 21:00:00"
    [166] "2009-11-11 22:00:00" "2009-11-11 23:00:00" NA                    "2009-11-10 01:00:00" "2009-11-10 02:00:00"
    [171] "2009-11-10 03:00:00" "2009-11-10 04:00:00" "2009-11-10 05:00:00" "2009-11-10 06:00:00" "2009-11-10 07:00:00"
    [176] "2009-11-10 08:00:00" "2009-11-10 09:00:00" "2009-11-10 10:00:00" "2009-11-10 11:00:00" "2009-11-10 12:00:00"
    [181] "2009-11-10 13:00:00" "2009-11-10 14:00:00" "2009-11-10 15:00:00" "2009-11-10 16:00:00" "2009-11-10 17:00:00"
    [186] "2009-11-10 18:00:00" "2009-11-10 19:00:00" "2009-11-10 20:00:00" "2009-11-10 21:00:00" "2009-11-10 22:00:00"
    [191] "2009-11-10 23:00:00" NA                    "2009-11-09 01:00:00" "2009-11-09 02:00:00" "2009-11-09 03:00:00"
    [196] "2009-11-09 04:00:00" "2009-11-09 05:00:00" "2009-11-09 06:00:00" "2009-11-09 07:00:00" "2009-11-09 08:00:00"
    [201] "2009-11-09 09:00:00" "2009-11-09 10:00:00" "2009-11-09 11:00:00" "2009-11-09 12:00:00" "2009-11-09 13:00:00"
    [206] "2009-11-09 14:00:00" "2009-11-09 15:00:00" "2009-11-09 16:00:00" "2009-11-09 17:00:00" "2009-11-09 18:00:00"
    [211] "2009-11-09 19:00:00" "2009-11-09 20:00:00" "2009-11-09 21:00:00" "2009-11-09 22:00:00" "2009-11-09 23:00:00"
    [216] NA                    "2009-11-08 01:00:00" "2009-11-08 02:00:00" "2009-11-08 03:00:00" "2009-11-08 04:00:00"
    [221] "2009-11-08 05:00:00" "2009-11-08 06:00:00" "2009-11-08 07:00:00" "2009-11-08 08:00:00" "2009-11-08 09:00:00"
    [226] "2009-11-08 10:00:00" "2009-11-08 11:00:00" "2009-11-08 12:00:00" "2009-11-08 13:00:00" "2009-11-08 14:00:00"
    [231] "2009-11-08 15:00:00" "2009-11-08 16:00:00" "2009-11-08 17:00:00" "2009-11-08 18:00:00" "2009-11-08 19:00:00"
    [236] "2009-11-08 20:00:00" "2009-11-08 21:00:00" "2009-11-08 22:00:00" "2009-11-08 23:00:00" NA

    Faut-il que je convertisse Z en un vecteur de 24*10 éléments puis ensuite utiliser la fonction strptime?

    Merci pour votre aide

  3. #3
    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 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    C'est certainement parce que les jours commencent à 00:00 et non pas à 01:00.
    Donc, pour la série des horaires, il faut plutôt un vecteur comme ça :
    Pour R, l'heure 24:00 n'existe pas. C'est 00:00 du lendemain...

    ced
    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

  4. #4
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour,

    En plus de la remarque - très juste - de ced, il y avait une erreur dans le code de ton premier message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    > Z <- "23 08/11/2009"
     
    > as.Date(Z, format='%H %d/%m/%Y')
    [1] "2009-11-08"
    et non pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    as.Date('Z', format='%H %d/%m/%Y')
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup pour vos reponses.

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Points : 11
    Points
    11
    Par défaut conversion en format horaire
    Bonjour,

    J'essaye de tracer un graphe afin d’étudier une quelconque relation entre le premier pic minimum du prix de l’électricité (le matin) par rapport au lever du jour
    et ce au quotidien.
    Je veux avoir en abcisse les jours sur une année (ici exemple 2003)
    et en ordonnée l'heure du lever du jour correspondant.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Elec <- read.csv(file="D:\\Elec data\\Electricity.2002.2008.csv",head=TRUE,sep=",")
    Elec<-Elec[,1]
    DataR<-Elec[2557:1]
    DataS<-DataR[366:730]
    as.Date(DataS,format='%d/%m/%Y')
    J'obtiens le résultat suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     [1] "2003-01-01" "2003-01-02" "2003-01-03" "2003-01-04" "2003-01-05"
     [6] "2003-01-06" "2003-01-07" "2003-01-08" "2003-01-09" "2003-01-10"
     [11] "2003-01-11" "2003-01-12" "2003-01-13" "2003-01-14" "2003-01-15"
     [16] "2003-01-16" "2003-01-17" "2003-01-18" "2003-01-19" "2003-01-20"
     [21] "2003-01-21" "2003-01-22" "2003-01-23" "2003-01-24" "2003-01-25"
     [26] "2003-01-26" "2003-01-27" "2003-01-28" "2003-01-29" "2003-01-30"
     [31] "2003-01-31" "2003-02-01" "2003-02-02" "2003-02-03" "2003-02-04"
     [36] "2003-02-05" "2003-02-06" "2003-02-07" "2003-02-08" "2003-02-09"
    ........................................................................................................[351] "2003-12-17" "2003-12-18" "2003-12-19" "2003-12-20" "2003-12-21"
    [356] "2003-12-22" "2003-12-23" "2003-12-24" "2003-12-25" "2003-12-26"
    [361] "2003-12-27" "2003-12-28" "2003-12-29" "2003-12-30" "2003-12-31"
    soit 365 valeurs.

    pour les ordonnées J'ai des valeurs de la forme "7h23" dans un vecteur.
    Comment dois-je procéder afin de convertir ces données en format "%H %M"
    pour que R les interprète comme des données horaires et non des données numériques classiques (en gros je veux que les données en ordonnées soient automatiquement converties en base 60).
    J'ai essaye avec la fonction as.Date(format="%Hh%M") mais R me renvoie un message d'erreur.

    Merci d'avance pour votre aide

  7. #7
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 74
    Points : 164
    Points
    164
    Par défaut
    Salut
    Je pense que tu devrais jetter un coup d'oeil au package chron !!!

Discussions similaires

  1. [WD17] Filtrer les données d'une colonne entre 2 dates (hfiltre en gros)
    Par franck34matlab dans le forum WinDev
    Réponses: 3
    Dernier message: 08/02/2015, 23h13
  2. regroupement en une colonne pour format date ?
    Par tanaka59 dans le forum Excel
    Réponses: 6
    Dernier message: 19/05/2012, 12h40
  3. Réponses: 3
    Dernier message: 06/11/2006, 08h14
  4. Réponses: 1
    Dernier message: 25/08/2006, 19h01
  5. Réponses: 1
    Dernier message: 29/12/2005, 18h04

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