[Résolu] Créer colonne nombre de jours entre 2 dates

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Marion Bévillon
Messages : 22
Enregistré le : 24 Mai 2013, 09:19

[Résolu] Créer colonne nombre de jours entre 2 dates

Messagepar Marion Bévillon » 28 Nov 2013, 10:16

Bonjour à tous,

J’ai fait des mesures à différentes dates et je dispose donc d’une colonne appelée « Date » dans lequel j’ai différentes dates au format suivant : « Jour/Mois/Année ».
Je veux faire une analyse pour étudier si la dynamique des variables étudiées est différente selon certains facteurs à partir de la levée (date 0) jusqu’à mon dernier prélèvement.

Pour cela, je voudrais créer une nouvelle colonne temps dans laquelle la date deviendrait le nombre de jours depuis la levée. En gros, quelque chose comme ça (où le 10/09/2013 = date de la levée) :

......Date..........temps....Facteur
10/09/2013........0............A
10/09/2013........0............B
13/09/2013........3............A
13/09/2013........3............B
21/09/2013........11...........A
21/09/2013........11...........B

Bon dans la réalité, j’ai plus de dates et à des dates plus éloignées donc plus de risques de me tromper en comptant ça à la main (même si ce ne sont pas des calculs très compliqués en soit…).
J’ai vu un post sur le forum qui permet de calculer le nombre de jours entre 2 dates grâce à la fonction as.Date (http://forums.cirad.fr/logiciel-R/viewtopic.php?t=6179&highlight=convertir+date) mais comme le langage R n’est pas encore très intuitif pour moi, je n’arrive pas à appliquer cette technique à une colonne entière.
Est-ce que quelqu’un aurait une idée sur la façon de procéder ? (en espérant ne pas avoir à passer par une boucle, je commence tout juste à manipuler ça donc j’y vais vraiment à tâtons pour le moment).

Merci d’avance pour votre aide,
Marion.

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 28 Nov 2013, 10:36

Code : Tout sélectionner

> dfr <- read.table(text = "Date
+ 10/09/2013
+ 10/09/2013
+ 13/09/2013
+ 13/09/2013
+ 21/09/2013
+ 21/09/2013", header = TRUE)
>
> dfr$Date <- as.Date(as.character(dfr$Date), format = "%d/%m/%Y")
> dfr$ecart <- as.numeric(dfr$Date - dfr$Date[1])
> dfr
        Date ecart
1 2013-09-10     0
2 2013-09-10     0
3 2013-09-13     3
4 2013-09-13     3
5 2013-09-21    11
6 2013-09-21    11
Renaud

Marion Bévillon
Messages : 22
Enregistré le : 24 Mai 2013, 09:19

Messagepar Marion Bévillon » 28 Nov 2013, 10:54

Super merci beaucoup! :)

Pauline Thiel
Messages : 40
Enregistré le : 06 Jan 2017, 08:29

Re: [Résolu] Créer colonne nombre de jours entre 2 dates

Messagepar Pauline Thiel » 12 Jan 2017, 13:53

Bonjour,
Je dois faire la même chose, calculer le temps entre deux dates d'une colonne mais ce n'est pas chaque date avec la première mais chacune avec la précédente. Savez-vous comment je peux faire cela ?
Cordialement,
Pauline

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: [Résolu] Créer colonne nombre de jours entre 2 dates

Messagepar Serge Rapenne » 12 Jan 2017, 15:54

Bonjour,

il aurait été plus logique de créer un nouveau message pour cette question.

en reprenant l'exemple de Maxime :

Code : Tout sélectionner

dfr <- read.table(text = "Date
+  10/09/2013
+  10/09/2013
+  13/09/2013
+  13/09/2013
+  21/09/2013
+  21/09/2013", header = TRUE)

dfr$Date <- as.Date(as.character(dfr$Date), format = "%d/%m/%Y")
difftime(dfr$Date[-1],dfr$Date[-nrow(dfr)],units="days")
Time differences in days
[1] 0 3 0 8 0


Serge

Pauline Thiel
Messages : 40
Enregistré le : 06 Jan 2017, 08:29

Re: [Résolu] Créer colonne nombre de jours entre 2 dates

Messagepar Pauline Thiel » 13 Jan 2017, 08:28

Bonjour,

J'ai essayé ces lignes mais il me renvoie le message d'erreur suivant :
Error in `$<-.data.frame`(`*tmp*`, "temps", value = c(5443200, -29116800, :
replacement has 75 rows, data has 76

Savez-vous pourquoi ça ne fonctionne pas?

Cordialement,
Pauline

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: [Résolu] Créer colonne nombre de jours entre 2 dates

Messagepar Serge Rapenne » 13 Jan 2017, 09:45

Bonjour,

il y a un écart de moins que d’éléments dans le vecteur car le 1er écart est calculé pour dfr$Date[2], tu peux ajouter un NA en tête de vecteur

Code : Tout sélectionner

c(NA,difftime(dfr$Date[-1],dfr$Date[-nrow(dfr)],units="days"))

Serge

Pauline Thiel
Messages : 40
Enregistré le : 06 Jan 2017, 08:29

Re: [Résolu] Créer colonne nombre de jours entre 2 dates

Messagepar Pauline Thiel » 13 Jan 2017, 10:08

Merci, ça fonctionne mais j'ai encore un autre problème : R ne me met pas les dates dans l'ordre croissant mais rangées aléatoirement donc les différences qui apparaissent ne sont pas bonnes.
Comment résoudre ce problème, svp?
Pauline

Pauline Thiel
Messages : 40
Enregistré le : 06 Jan 2017, 08:29

Re: [Résolu] Créer colonne nombre de jours entre 2 dates

Messagepar Pauline Thiel » 13 Jan 2017, 10:21

J'ai pu résoudre le problème grâce à la fonction order finalement.
Merci !
Pauline

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: [Résolu] Créer colonne nombre de jours entre 2 dates

Messagepar Serge Rapenne » 13 Jan 2017, 10:54

Une autre possibilité incluant la mise en ordre des dates avec dplyr

Code : Tout sélectionner

#construction d'un jeu de données désordonnées pour l'exemple
dfr<-structure(list(Date = structure(c(15959, 15958, 15961, 15950,
15969, 15969), class = "Date")), .Names = "Date", row.names = c(NA,
-6L), class = "data.frame")

dfr
        Date
1 2013-09-11
2 2013-09-10
3 2013-09-13
4 2013-09-02
5 2013-09-21
6 2013-09-21

library(dplyr)
dfr %>% arrange(Date) %>% mutate(Ecart=difftime(Date, lag(Date),units="days"))
        Date   Ecart
1 2013-09-02 NA days
2 2013-09-10  8 days
3 2013-09-11  1 days
4 2013-09-13  2 days
5 2013-09-21  8 days
6 2013-09-21  0 days

Serge

Caroline Lévy
Messages : 1
Enregistré le : 13 Jan 2017, 12:30

Re: [Résolu] Créer colonne nombre de jours entre 2 dates

Messagepar Caroline Lévy » 13 Jan 2017, 13:17

bonjour,
(je suis débutante)

j'ai une base de donnée volumineuse avec entre autre :
une variable date de naissance au format jj/mm/aaaa
une variable date de rencontre avec le sujet au format jj/mm/aaaa

je dois créer une nouvelle variable me donnant l'âge du sujet en année au moment de la rencontre (sur la base 365,25 jours par an)

Chacunes des deux variables, POSIXlt[1:1], format: NA à la fonction str()

comment faire svp ?
merci

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: [Résolu] Créer colonne nombre de jours entre 2 dates

Messagepar Serge Rapenne » 13 Jan 2017, 14:59

Bonjour,

Merci de créer un nouveau message pour votre question.

Serge


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité