Gérer les données temporelles avec R pour construire un graphique 

Langage R

L'essentiel de cette page !

La gestion du temps sous R n'est pas un probable (on parle de données calendaires ou temporelles). Il suffit d'indiquer à R quel est le format de vos dates pour qu'elles soient converties.

Pour avoir un affichage correcte du temps (heure/seconde) en particulier, on peut avoir besoin de faire une conversion avec la fonction hms() à chercher sur ce site.

On notera aussi l'existence de la fonction fix_date_df() de la librairie {DateFixR} qui semble corriger automatiquement toutes les dates mal fichues.

mots clefs : gestion du temps avec R, données temporelles, dates, heure, évolution, période, série temporelle

x = c(5.7,7.15,7.25,7.3,7.4)

dates = c("2015-03-01","2015-03-02","2015-03-06","2015-03-12","2015-04-01")

# la ligne qui suit précise a R comment lire les dates

dates = strptime(dates, "%Y-%m-%d") 

plot(dates,x,col="#AAFF00",pch=16,cex=2,type="o")

x = c("19/10/2019 19:00","19/10/2019 22:12")

x = strptime(x,format="%d/%m/%Y %R")

difference_de_temps = as.numeric(difftime(x[2],x[1],units="mins"))

# Conversion en heures et minutes

minutes = difference_de_temps%%60

heures = (difference_de_temps-minutes)/60

cat("La différence de temps est de : ",heures," heures et ",minutes," minutes.\n")

x = c("19/10/2019 19:00","19/10/2019 22:12")

x = strptime(x,format="%d/%m/%Y %R")$year +1900 ; print(x)

Autre méthode :

library(lubridate)

month(x)

x = c(5.7,7.15,7.25,7.3,7.4)

dates = c("2015-03-01","2015-03-02","2015-03-06","2015-03-12","2015-04-01")

dates = strptime(dates, "%Y-%m-%d") 

plot(dates,x,axes=F,col="#FFAA00",pch=16,cex=4,type="o")

axis.POSIXct(1, at=seq(from=min(dates), to=max(dates), by="day"), format="%m-%d", las=2) # force infiquant la date de chaque jour




Un exemple pour aller plus loin.


Cet exemple montre comment  : 

Et sous ggplot2 : normalement, c'est automatique, mais on peut toujours préciser le format temporel avec as.Date.

Exemple:

ggplot(data, aes(x = as.Date(date,"%y/%m/%d"), y=Ma_variable_y))+

  geom_point(col="red")