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 :

ajouter un certain nombre de jours à une date


Sujet :

R

  1. #1
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Points : 234
    Points
    234
    Par défaut ajouter un certain nombre de jours à une date
    Bonjour,

    J'ai des dates au format POSIXlt et POSIX.
    J'aimerais ajouter 15 jours à userDateStart = as.POSIXlt("2011-09-01 00:00:00").
    userDateStart + 15 renvoie userDateStart + 15 secondes ...
    J'ai trouvé une solution pas très propre... convertir 15 jours en secondes (15*24*3600)
    Comment faire pour ajouter des jours ? ( mais aussi des mois, des années ... ?) de manière "propre" ?
    je cherche quelque chose du genre addDays(15, userDateStart), addMonths(2, userDateStart) etc...

    Merci d'avance

  2. #2
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    En effectuant une rapide recherche google avec les mots-clés suivants : "POSIXlt avec R", je trouve la réponse souhaitée dans le premier lien.

    En effet, les objets de type "POSIXlt" sont composés des éléments suivants :

    • sec : les secondes, par défaut 0
    • min : les minutes, par défaut 0
    • hour : les heures, par défaut 0
    • mday : le jour du mois
    • mon : le mois de l’année, codé 0-11
    • year : l’année
    • wday : le jour de la semaine, 0 pour dimanche
    • yday : le jour de l'année
    • isdst : le décalage de l'horaire d'été


    On peut donc faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    userDateStart = as.POSIXlt("2011-09-01 00:00:00")
    userDateStart
    [1] "2011-09-01"
     
    userDateStart$mday<-userDateStart$mday+15
    userDateStart
    [1] "2011-09-16"
    Même principe pour ajouter des mois, années, etc...


    Cordialement,

    A.D.

  3. #3
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Points : 234
    Points
    234
    Par défaut
    Bonjour,

    Cette méthode ne marche pas avec les heures ( ajouter des heures à un objet de type POSIXlT ). Voici le code et le résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    d = as.POSIXlt("2012-02-28 18:00:00")
    > d
    [1] "2012-02-28 18:00:00"
    > d$h = d$h + 12
    > d
    Erreur dans format.POSIXlt(x, usetz = TRUE) : argument 'x' incorrect
    Y a - t - il un moyen de faire de l'arithmétique sur les dates de manière simple ? Ca doit exister en R, ou bien R n'est pas aussi facile que ca ... ?

    Merci d'avance pour votre aide


    [EDIT] : On m'a proposé le package "lubridate", je n'ai pas encore testé, je posterai le résultat ici. Qui a déjà utilisé ce package? qu'en pensez vous?

  4. #4
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Si vous aviez bien lu mon précédent message, en ce qui concerne les heures le paramètre est "hour" et non "h".

    Personnellement, ce qui suit fonctionne très bien chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    d <- as.POSIXlt("2012-02-28 18:00:00")
    > d
    [1] "2012-02-28 18:00:00"
    > d$hour <- d$hour + 12
    > d
    [1] "2012-02-29 06:00:00"
    Sinon je ne connais pas le package "lubridate", désolée.


    Bonne continuation


    Cordialement,

    A.D.

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

Discussions similaires

  1. Ajouter un nombre de jours à une date
    Par FanFan44 dans le forum Débutez
    Réponses: 1
    Dernier message: 10/07/2013, 13h04
  2. Ajout d'un nombre de jours à une date
    Par thecanea dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/08/2011, 11h03
  3. Ajouter un nombre de jour à une date
    Par thierry_b dans le forum Général Java
    Réponses: 6
    Dernier message: 10/12/2008, 15h19
  4. Réponses: 2
    Dernier message: 03/01/2006, 14h58
  5. [Dates] Soustraire un nombre de jour à une date
    Par lesgars dans le forum Langage
    Réponses: 2
    Dernier message: 09/12/2005, 14h43

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