web-dev-qa-db-fra.com

Modification du format de date en "% d /% m /% Y"

Voudrait changer le format de la date. Mon bloc de données est illustré ci-dessous et souhaite changer tous les formats de date en "%d/%m/%Y".

df:

id    bdate       wdate        ddate
1   09/09/09    12/10/09     2009-09-27
24
Bazon
df$ddate <- format(as.Date(df$ddate), "%d/%m/%Y")
32
Brani
df$ddate<-strftime(df$ddate,"%d/%m/%Y")
df$bdate<-strftime(strptime(df$bdate,"%d/%m/%y"),"%d/%m/%Y")
df$wdate<-strftime(strptime(df$wdate,"%d/%m/%y"),"%d/%m/%Y")
15
James

L'action par défaut R consiste à traiter les chaînes comme des facteurs. Bien sûr, une configuration individuelle peut différer des paramètres par défaut. Il est recommandé de modifier les valeurs des variables en character, puis de les convertir en date. J'utilise souvent le package chron - c'est sympa, simple et ce qui compte le plus, c'est le boulot. Seul inconvénient de ce package réside dans la gestion des fuseaux horaires.

Si vous n'avez pas chron installé, faites:

 install.packages("chron")
 # load it
 library(chron)
 # make dummy data
 bdate <- c("09/09/09", "12/05/10", "23/2/09")
 wdate <- c("12/10/09", "05/01/07", "19/7/07")
 ddate <- c("2009-09-27", "2007-05-18", "2009-09-02")
 # notice the last argument, it will not allow creation of factors!
 dtf <- data.frame(id = 1:3, bdate, wdate, ddate, stringsAsFactors = FALSE)
 # since we have characters, we can do:
 foo <- transform(dtf, bdate = chron(bdate, format = "d/m/Y"), wdate = chron(wdate, format = "d/m/Y"), ddate = chron(ddate, format = "y-m-d"))
 # check the classes
 sapply(foo, class)
 # $id
 # [1] "integer"

 # $bdate
 # [1] "dates" "times"

 # $wdate
 # [1] "dates" "times"

 # $ddate
 # [1] "dates" "times"

C'est ca ... ça devrait faire l'affaire ...

2
aL3xa