STOP aux problèmes de format de date lors des imports

Stop aux problèmes de formats de dates

Vous avez une ou plusieurs variables contenant des dates (avec ou sans élément d’heures) dans votre fichier de données, et lorsque vous l’importez dans R, le format est perdu ?

Pas de désespoir inutile ! Il existe une solution toute simple qui va vous permettre de vous en tirer, sans trop de difficultés.

Cette solution, c’est d’utiliser l’outil d’importation de RStudio. Il se trouve dans la fenêtre en haut à droite, dans l’onglet Environment.

Je vous montre, en pas à pas, comment faire.

Table des matières

Ouvrez l'outil d'importation

Allez dans la fenêtre en haut à droite,  et dans l’onglet Environment. Choisissez :

  • “From Text (readr)” si votre fichier est en .csv, ou
  • “From Excel”, si votre fichier est en .xlsx.

 

interface outils d'importation de données dans R Studio

Pour illustrer cet article, je vais employer le fichier data-date-heure.csv suivant  :

Je choisis donc “From Text (readr)”. Voici l’interface que vous allez obtenir :

Outils d'importation des fichier csv par readr et RStudio

Modifiez le séparateur de colonnes si nécessaire

Lorsqu’on importe un fichier .csv, le séparateur de colonne peut être mal identifié. Dans ce cas, la partie rendue de votre fichier, dans l’interface, ne ressemble à rien, parce que les colonnes sont mal séparées. C’est exactement ce qui se passe ici :

Mauvaise séparation des colonnes

Après avoir indiqué que le séparateur est semicolon (point virgule), on obtient bien 3 colonnes. Mais nous pouvons voir qu’elles sont de type “character” et pas “Date”.

Changement du delimiter

Remarque : le problème ne se pose pas avec les fichiers au format .xlsx.

Modifiez la class de la variable et le format de date

Pour cela, utilisez le menu déroulant au niveau des colonnes de vos variables de dates, et choisissez :

  • Date, si la variable contient uniquement des éléments de Date (pas d’élément d’heure – voir la variable Time1)
  • DateTime si la variable contient des éléments de Date et d’heure – voir la variable Time 3)

Puis, modifiez le format, et les séparateurs (\ ou -), afin qu’ils correspondent au format actuel de votre variable : 

  • %Y : correspond à l’année avec 4 chiffre (2022)
  • %m : correspond au mois en chiffre
  • %d : correspond au jour en chiffre

Pour la variable Time1 : le format actuel est jour/mois/année, je modifie donc en %d/%m/%Y:

modifications de la variable 1

Voici le résultat obtenu : 

variable Date obtenue

Notez le format obtenu de la date, qui correspond à la norme iso8601 : YYYY-MM-DD.

Pour la variable Time3 le format actuel est année-mois-jour heure:minute:seconde. J’utilise donc %Y-%m-%d %H:%M:%S :

Modification du format de date et d'heure

Voici alors le résultat obtenu, là encore avec un format iso8601 : YYYY-MM-DD HH:MM:SS

 

Resultat de la modification du format de la date et des éléments d'heures

Pour trouver le format de vos données, vous pouvez vous aider de ce tableau :

 

Récupérez le code obtenu et réutilisez-le !

Et cerise, sur le gâteau, comme d’habitude, RStudio nous fournit le code pour réaliser l’importation correspondante, en ligne de commande. Ici le code obtenu après avoir modifié le format des 3 variables :

 

library(readr)
 data_date_heure <- read_delim("data/data-date-heure.csv", 
     delim = ";", 
     escape_double = FALSE, 
     col_types = cols(Time1 = col_date(format = "%d/%m/%Y"),
    				  Time2 = col_date(format = "%d-%m-%Y"), 
        			 `Time 3` = col_datetime(format = "%Y-%m-%d %H:%M:%S")), 
     trim_ws = TRUE)

# vérification     
str(data_date_heure)   
spec_tbl_df [3 x 3] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
 $ Time1 : Date[1:3], format: "2022-06-21" "2022-12-24" ...
 $ Time2 : Date[1:3], format: "2022-06-21" "2022-12-24" ...
 $ Time 3: POSIXct[1:3], format: "2022-06-21 23:03:55" "2022-12-24 12:31:02" ...
 - attr(*, "spec")=
  .. cols(
  ..   Time1 = col_date(format = "%d/%m/%Y"),
  ..   Time2 = col_date(format = "%d-%m-%Y"),
  ..   `Time 3` = col_datetime(format = "%Y-%m-%d %H:%M:%S")
  .. )
 - attr(*, "problems")=<externalptr>  

Les class des deux premières variable sont bien Date et celle de la troisième POSIXct

Pour aller plus loin

Ce petit hack fait partie des trucs et astuces que je partage dans ma formation R pour la data analyse.  Si vous souhaitez apprendre à utiliser R efficacement, n’hésitez pas à me rejoindre sur une prochaine session (13, 14, et 15 avril 2022). Vous trouverez toutes les infos en cliquant sur le lien.

 

D’ici là,  j’espère que cet article vous aidera à importer plus facilement vos fichiers contenant des variables de dates et d’heure !

Si vous souhaitez aller plus loin dans l’utilisation de ces données, et en apprendre plus sur leur manipulation, vous pouvez également consulter l’article : Gérer les données de date et d’heure avec le package lubridate.

Poursuivez votre lecture

Soutenir le blog

Vous souhaitez soutenir mon travail ? Vous pouvez le faire en réalisant un don libre sur la page Tipeee du blog.

 

4 réponses

  1. Bonjour,
    et merci beaucoup pour ce site très didactique.
    La fonction read.xlsx de la bibliothèque xlsx reconnait les variables aux formats Date et Heure de Excel.
    Bonne journée
    Véronique

    1. Bonjour Véronique,

      J’ai voulu vérifier rapidement, mais je ne suis pas parvenue à installer le package xlsx qui nécessite JAVA.
      Le problème demeure lorsque les variables sont (visuellement sous Excel) des dates mais qu’elles sont en format texte.
      En tout cas, merci pour la précision !

  2. Bonjour,
    Existe t-il une fonction permettant de récupérer le trimestre à partir d’une date. Par exemple, @function(10/03/2022). Le résultat de la fonction donne le premier trimestre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Bonjour !

vous venez souvent ?

Identifiez-vous pour avoir accès à toutes les fontionnalités !

Aide mémoire off'R ;)

Enregistrez vous pour recevoir gratuitement mes fiches “aide mémoire” (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.