Cómo convertir el formato de fecha de Excel a la fecha adecuada en R
Estoy trabajando con un csv que desafortunadamente ha registrado fechas y horas usando el formato numérico de 42705, aunque debería ser 12/01/2016.
Me gustaría convertirlo al formato correcto en R usando lubridate o algún otro paquete. ¿Existe alguna función que lo maneje?
No es necesario utilizarlo lubridate
para esto, la función base as.Date
maneja muy bien este tipo de conversión. El truco es que hay que proporcionar el origen, que en Excel es el 30 de diciembre de 1899.
as.Date(42705, origin = "1899-12-30")
# [1] "2016-12-01"
Si desea conservar sus tipos de columnas, puede intentar usar la read_excel
función del readxl
paquete. Eso le permite cargar un archivo XLS o XLSX con el formato numérico conservado.
EDITAR: XKCD relevante
Aquí hay otra forma de hacerlo usando los paquetes janitor y tibble:
install.packages("janitor")
install.packages("tibble")
library(tibble)
library(janitor)
excel_numeric_to_date(as.numeric(as.character(YourDate)), date_system = "modern")
openxlsx
El paquete también permite xls
date
la conversión:
openxlsx::convertToDate(42705)
[1] "2016-12-01"
Y como sugiere @Suren, convertToDateTime
permite datetime
la conversión:
openxlsx::convertToDateTime(42705.5)
[1] "2016-12-01 12:00:00"
Como se dijo, muy buenas opciones:
as.Date(42705, origin = "1899-12-30")
openxlsx::convertToDate(42705)
Otra forma también podría ser:
format(as.Date(as.Date("1899-12-30") + 42705, "%d-%m-%Y"), "%d-%m-%Y")
Tenga en cuenta que puede cambiar el formato de salida donde está escrito.%d-%m-%Y
(¡Primero que nada, convierta as.numeric
si se importa como carácter!, o convierta en la fórmula:
format(as.Date(as.Date("1899-12-30") + as.numeric( number formatted as character), "%d-%m-%Y"), "%d-%m-%Y")