26 Dates dans R

26.1 Introduction

Travailler avec des dates peut être très frustrant. En général, le mieux est de travailler avec la classe de données la plus facile. Cela signifie par exemple que si la variable avec laquelle on travaille est en années, le mieux est d’en faire un integer; il n’y a pas de raison d’en faire une variable de la classe date ou date-time. Si par contre, ce n’est pas possible d’utiliser une de ces classes simplifiées, on peut utiliser la classe Date dans R.

26.2 Convertir en la classe Date

On peut convertir une variable de classe character en une variable de classe Dateen utilisant as.Date():

Notez que les deux apparaissent de la même manière, même si leur classe est différente.

## [1] "2018-10-12"
## [1] "2018-10-12"
## [1] "character"
## [1] "Date"

Si la date n’a pas le format YYYY-MM-DD ou YYYY/MM/DD, il faudra spécifier le format dans lequel on souhaite convertir la nouvelle variable de classe Date en utilisant le symbole % de la façon suivante:

## [1] "2005-01-06"

Pour une liste de toutes les spécifications possibles dans R, voir ?strptime.

Tidyverse lubridate rend la conversion de dates qui ne sont pas dans un format standard très facile grâce aux fonctions ymd(), ydm(), mdy(), myd(), dmy(), dym() et autres.

## [1] "1907-04-13"

Essayez as.Date("April 13, 1907") et vous verrez les avantages d’utiliser une fonction lubridate.

26.3 Travaillez avec la classe Date

Cela vaut clairement la peine de convertir des variables en la classe Date car on peut faire beaucoup de choses avec ce genre de variable qu’on ne pourrait pas faire si on les avait laissés en character.

Nombre de jours entre deux dates:

## Time difference of 305 days

Comparer deux dates:

## [1] TRUE

Notez que Sys.Date() renvoie la date d’aujourd’hui en une variable de classe Date:

## [1] "2019-10-31"
## [1] "Date"

R a des fonctions pour extraire des informations particulières à partir d’une date:

## [1] "Thursday"
## [1] "Thu"
## [1] "October"
## [1] "Oct"
## [1] "Q4"

Le package lubridate procure des fonctions additionnelles pour extraire plus d’information à partir d’une date de classe Date:

## [1] 2019
## [1] 304
## [1] 10
## [1] Oct
## 12 Levels: Jan < Feb < Mar < Apr < May < Jun < Jul < Aug < Sep < ... < Dec
## [1] 31
## [1] 44
## [1] 5

26.4 Tracez des graphes avec une variable de classe Date

On peut travailler avec base R graphics et ggplot2, les deux peuvent travailler avec une variable de la classe Date et nommer les axes correctement:

26.4.2 ggplot2

Notez que contrairement à read.csv() de base R, readr::read_csv() lit automatiquement DATE comme une variable de classe Date par ce que cette variable est déjà sous la forme YYYY-MM-DD:

## Parsed with column specification:
## cols(
##   DATE = col_date(format = ""),
##   `5/1 ARM` = col_double(),
##   `15 YR FIXED` = col_double(),
##   `30 YR FIXED` = col_double()
## )

A nouveau, lorsque les données sont filtrées, les labels de l’axe x changent de years à months.

26.4.2.1 Breaks, limits, labels

On peut contrôler les breaks, limits et labels de l’axe x grâce à scale_x_date():

(Oui, même dans le package tidyverse on ne peut pas complètement échapper à l’utilisation de % pour convertir les formats des dates. Pour rappel, ?strptime si besoin d’aide).

26.5 Date and time classes

## [1] "2019-10-31 07:53:54 EDT"






with