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.
Allez dans la fenêtre en haut à droite, et dans l’onglet Environment. Choisissez :
.csv
, ou.xlsx
.
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 :
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 :
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”.
Remarque : le problème ne se pose pas avec les fichiers au format .xlsx.
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 chiffrePour la variable Time1
: le format actuel est jour/mois/année, je modifie donc en %d/%m/%Y
:
Voici le résultat obtenu :
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
:
Voici alors le résultat obtenu, là encore avec un format iso8601 : YYYY-MM-DD HH:MM:SS
Pour trouver le format de vos données, vous pouvez vous aider de ce tableau :
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
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.
Vous souhaitez soutenir mon travail ? Vous pouvez le faire en réalisant un don libre sur la page Tipeee du blog.
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.
4 réponses
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
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 !
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
Bonjour,
il me semble que la fonction quarter de lubridate fait le job !
Bonne continuation.