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.

Intentando extraer la fecha de una marca de tiempo R.

Tengo un df con columnas:

id = c (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
time = c ("2020-12-31 16:00:00 PST", "2020-12-31 16:00:00 PST", "2020-12-31 16:00:00 PST", "2020-12-31 16:00:01 PST", "2020-12-31 16:00:01 PST", "2020-12-31 16:00:02 PST", "2020-12-31 16:00:03 PST", "2020-12-31 16:00:03 PST", "2020-12-31 16:00:03 PST", "2020-12-31 16:00:03 PST")
df = data.frame (id, time)

Extraje la hora usando la función anytime () en mi columna original de marcas de tiempo, por lo que estos valores son dobles. Me gustaría mantener solo la fecha en la columna y quitar la hora y la zona horaria. Por ejemplo, el primer valor en la columna de tiempos sería “2020-12-31”. ¿Hay alguna manera rápida de hacer esto?

Originalmente estaba haciendo:

df$'date' = as.character(anytime(df$time))

df = df%>%
  mutate(date = strsplitfixed (df$date, ""), "%Y-%m-%d", 2))%>%
  mutate(date = as.Date (date))

Sin embargo, tarda mucho tiempo en convertir cada valor a una cadena y luego dividirlo según el espacio y luego volver a convertir las fechas en formato de fecha (lo que también está causando un problema con las dimensiones, ya que la columna de datos solo muestra las fechas, pero convertir esa columna a as.Date() está mostrando un problema). ¿Hay alguna manera más rápida de hacer esto? ¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar el paquete lubridate para extraer rápidamente la fecha del registro de tiempo. Puede utilizar la función ymd() para convertir el registro de tiempo a un objeto de fecha y luego utilizar la función as.Date() para convertir el objeto de fecha a una fecha.

    library(lubridate)
    
    df$fecha <- as.Date(ymd(df$tiempo))
    

Comments are closed.