es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

R: Error de Lubridate al convertir caracter a numérico.

Soy nuevo en R, y busqué publicaciones antiguas para encontrar una respuesta, pero no encontré nada que resolviera mi problema.

Importé un archivo CSV con la hora de inicio de un viaje en el formato mdy h:mm:ss, pero actualmente se reconoce como un carácter. He intentado usar mdy_hms(c("11/1/2020 0:05:00", "11/1/2020 7:29:00", "11/1/2020 14:04:00")) así como as.Date(parse_date_time(dc_biketrips$started_at, c(mdy_hms))), pero sin éxito.

¿Alguien tiene alguna sugerencia sobre cómo puedo solucionar esto?

ACTUALIZACIÓN: También intenté usar date <- mdy_hms(c("11/1/2020 0:05:00", "11/1/2020 7:29:00", "11/1/2020 14:04:00")) str(date), pero esto tampoco funcionó.

Intento de usar date <- mdy_hms(C("11/1/2020 0:05:00"etc)

Imagen del archivo CSV

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está con el formato de la fecha y la hora en el archivo CSV, que está siendo reconocido como un carácter. Una solución podría ser convertir primero los datos de carácter en un formato POSIXct utilizando la función as.POSIXct().

    # Suponiendo que la columna con los datos de fecha y hora se llama `started_at`
    dc_biketrips$started_at <- as.POSIXct(dc_biketrips$started_at, format="%m/%d/%Y %H:%M:%S")
    
    # Verificar la clase de la columna después de la conversión
    class(dc_biketrips$started_at)
    

    Esto debería convertir los datos de carácter en un formato de fecha y hora que pueda ser reconocido por R. Luego puedes usar funciones de lubridate como month(), day(), hour(), etc. para extraer información específica de la columna de fecha y hora.

    Si deseas seguir utilizando el paquete lubridate, puedes aplicarlo después de la conversión al formato POSIXct de la siguiente manera:

    library(lubridate)
    
    dc_biketrips$started_at <- as.POSIXct(dc_biketrips$started_at, format="%m/%d/%Y %H:%M:%S")
    month(dc_biketrips$started_at)      # extraer mes
    day(dc_biketrips$started_at)        # extraer día
    hour(dc_biketrips$started_at)       # extraer hora
    minute(dc_biketrips$started_at)     # extraer minuto
    second(dc_biketrips$started_at)     # extraer segundo
    

    Esto debería darte el resultado deseado.

Comments are closed.