changement de format de date

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

Jerome Calvet
Messages : 9
Enregistré le : 08 Avr 2020, 13:21

changement de format de date

Messagepar Jerome Calvet » 08 Avr 2020, 13:59

bonjour,
je suis totalement débutant sous R
voici mon problème dans mon tableau A, j'ai une colonne DATE. Ces dates sont sous le fomat AAAA-MM-JJ. je Voudrais les passer en format JJ/MM/AAAA;

Pour commencer ,je souhaite changer les - en /, j'ai écrit
library(stringr)
str_replace (A$DATE, "-", "/")

mais je n'ai aucun changement dans ma colonne lorsque je vérifie dans mon tableau.
la console m'affiche: 2020/04-07" "2017/05-18" "2017/10-24
quelqu'un pourrait il m'aider ma ligne?

merci d'avance

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

Re: changement de format de date

Messagepar Serge Rapenne » 08 Avr 2020, 14:35

Bonjour et bienvenu,

Il faudrait que tu commences par lire la documentation de base de R.

En l'occurrence la fonction que tu utilises et comme tu l'utilises ne fait que le calcul demandé (c'est à dire remplacer le 1er "-" par "/"), rien de plus. Tu ne dis pas ce que tu veux faire du résultat.
Tu peux vouloir modifier le contenu de la colonne, créer une nouvelle colonne ou stocker le résultat dans une nouvelle variable ...

pour remplacer les données de la colonne existante, il faut faire comme ça :

Code : Tout sélectionner

dta<-data.frame(id=1.3,Date=c("2020-01-01","2020-01-02","2020-01-03")) #creation d'un jeu de données pour l'exemple
dta
  id       Date
1  1 2020-01-01
2  2 2020-01-02
3  3 2020-01-03

dta$Date<-str_replace(dta$Date,"-","/")
dta
  id       Date
1  1 2020/01-01
2  2 2020/01-02
3  3 2020/01-03

#ou pour tous les "-"
dta$Date<-str_replace_all(dta$Date,"-","/")
dta
  id       Date
1  1 2020/01/01
2  2 2020/01/02
3  3 2020/01/03


mais pour faire ce que tu veux je passerais par une variable de type POSIXct comme ceci

Code : Tout sélectionner

dta$Date<-as.POSIXct(dta$Date) #on transforme Date en variable POSIXct
 dta$Date<-format(dta$Date,"%d/%m/%Y") # on convertit au bon format
dta
  id       Date
1  1 01/01/2020
2  2 02/01/2020
3  3 03/01/2020


Code : Tout sélectionner

?strptime
pour la description des formats possibles.

Serge

Eric Casellas
Messages : 767
Enregistré le : 06 Jan 2009, 14:59

Re: changement de format de date

Messagepar Eric Casellas » 08 Avr 2020, 14:48

Salut,

version courte : utilise la fonction str_replace_all à la place de str_replace

version + longue :
Si ta colonne est de type Date (tu peut voir si c'est la cas avec les fonctions class ou str), tu peut contrôler l'affichage dans la console (mais ceci ne va pas changer l'objet en question, juste son affichage qui grosso modo passe par une conversion en chaînes de caractères) avec la fonction format.
Sinon a priori tu peut aussi utiliser la fonction str_replace_all du paquet stringr (ou la fonction gsub) pour convertir soit des objets de type chaînes de caractères ou l'affichage des dates

par exemple :

Code : Tout sélectionner

  (dates_str <- c("1992-02-27", "2000-01-14", "2020-02-01"))
  (dates <- as.Date(dates_str, format="%Y-%m-%d"))
  format(dates, format="%Y/%m/%d")
  gsub("-", "/", dates_str)
  gsub("-", "/", dates)
  library(stringr)
  str_replace_all(dates_str, "-", "/")
  str_replace_all(dates, "-", "/")


Eric
Eric

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: changement de format de date

Messagepar Logez Maxime » 09 Avr 2020, 07:30

Bonjour,

si tu as des chaînes de caractères et que tu souhaites toujours une chaîne de caractères :

Code : Tout sélectionner

# exemple
x <- "2020-10-02"
# le code
sub("(\\d{4})-(\\d{2})-(\\d{2})", "\\3/\\2/\\1", x, perl = T)
[1] "02/10/2020"
Cordialement,
Maxime

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

Re: changement de format de date

Messagepar Serge Rapenne » 09 Avr 2020, 09:36

@Maxime,

Joli, il faudra qu'un jour je me plonge sérieusement dans les regexp

Serge

Jerome Calvet
Messages : 9
Enregistré le : 08 Avr 2020, 13:21

Re: changement de format de date

Messagepar Jerome Calvet » 09 Avr 2020, 12:12

merci pour vos réponses, je regarde tout ça, je devrais trouver mon bonheur.

Jerome


Retourner vers « Questions en cours »

Qui est en ligne

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