Cómo convertir el formato de fecha de Excel a la fecha adecuada en R

Resuelto elksie5000 asked hace 54 años • 6 respuestas

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?

elksie5000 avatar Jan 01 '70 08:01 elksie5000
Aceptado

No es necesario utilizarlo lubridatepara esto, la función base as.Datemaneja 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_excelfunción del readxlpaquete. Eso le permite cargar un archivo XLS o XLSX con el formato numérico conservado.

EDITAR: XKCD relevante

tira cómica xkcd

Andrew Brēza avatar Apr 05 '2017 11:04 Andrew Brēza

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")    
Reza Rahimi avatar Oct 23 '2017 17:10 Reza Rahimi

openxlsxEl paquete también permite xls datela conversión:

openxlsx::convertToDate(42705)
[1] "2016-12-01"

Y como sugiere @Suren, convertToDateTimepermite datetimela conversión:

openxlsx::convertToDateTime(42705.5)
[1] "2016-12-01 12:00:00"
Waldi avatar Jun 11 '2020 21:06 Waldi

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.numericsi 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")
CONSULT FIV avatar Jun 10 '2021 20:06 CONSULT FIV