Je souhaite convertir ma colonne Date au format de date réel. Je ne peux pas convertir avec as.Date. Pourriez-vous m'aider s'il vous plait? J'ai essayé de suivre. Mais ça ne marche pas. 1) as.POSIXct (as.character (df1 $ Date, format = "% Y% m% d")) 2) as.Date (as.character (Date), "% Y /% m% / d").
> head(df1)
Date sim obs
2 43091.25 313.62295499999999 314.39
3 43093.25 313.60034200000001 314.43
4 43094.25 313.608948 314.31
5 43095.25 313.56323200000003 314.24
6 43096.25 313.52330000000001 314.2
7 43097.25 313.47250000000003 314.29000000000002
> str(df1)
data.frame': 700 obs. of 3 variables:
$ Date: chr "43091.25" "43093.25" "43094.25" "43095.25" ...
$ sim : chr "313.62295499999999" "313.60034200000001" "313.608948"
"313.56323200000003" ...
$ obs : chr "314.39" "314.43" "314.31" "314.24" ...
3 Réponses :
Les dates avec un modèle 43ddd.dd proviennent généralement d'Excel.
Vous pouvez utiliser openxlsx :
openxlsx::convertToDateTime(as.numeric("43091.25"))
[1] "2017-12-22 06:00:00 CET"
La réponse de Waldi est excellente et openxlsx est excellent. Comme alternative pour toute personne rencontrant cela à l'avenir, vous pouvez également utiliser le concierge:
Date sim obs <date> <dbl> <dbl> 1 2017-12-22 314. 314. 2 2017-12-24 314. 314. 3 2017-12-25 314. 314.
Produit:
df <- tribble(~Date, ~sim, ~obs,
43091.25, 313.6222956, 314.39,
43093.25, 313.60034200000001, 314.43,
43094.25, 313.608948, 314.31)
df %>%
mutate(Date = janitor::excel_numeric_to_date(Date))
Il n'est pas nécessaire d'utiliser des packages externes, spécifiez simplement l'origine utilisée par Excel:
Date <- c("43091.25", "43093.25", "43094.25", "43095.25", "43096.25", "43097.25")
as.Date(as.numeric(Date), origin = "1899-12-30")
# [1] "2017-12-22" "2017-12-24" "2017-12-25" "2017-12-26" "2017-12-27" "2017-12-28"
Les heures sont tronquées
@Waldi Je pense que l'OP n'est qu'après la date.