una separar ordenar numero hora fechas fecha extraer convertir año agrupar r lubridate

separar - ordenar fechas en r



Convertir el carácter a la fecha en R (3)

La forma más fácil es usar lubridate:

library(lubridate) prods.all$Date2 <- mdy(prods.all$Date2)

Esta función devuelve automáticamente los objetos de la clase POSIXct y funcionará con factores o caracteres.

Soy relativamente nuevo en R, pero esta es la primera vez que he tenido que lidiar con conversiones de fechas. Leí mis datos de un CSV (usando read.table ()), pero acorté los datos para resaltar mi problema. Cuando se lee en R, el campo Fecha es el carácter.

Simplemente, la mayoría de mis citas son obligadas correctamente, excepto en algunos casos. Esperamos que el siguiente ejemplo le muestre lo que está pasando.

# my attempt to coerce the date -- uses the stringr package prods.all$Date2 <- as.Date(str_sub(prods.all$Date, 1, str_locate(prods.all$Date, " ")[1]-1), "%m/%d/%Y") # grab two rows to highlight my issue temp <- prods.all[c(1925:1926), c(1,8)] > temp Date Date2 1925 10/9/2009 0:00:00 2009-10-09 1926 10/15/2009 0:00:00 0200-10-15

Como puede ver, el año de algunas de las fechas es incorrecto. El patrón parece ocurrir cuando el día es de dos dígitos.

He revisado un par de libros y he intentado buscar en Google de una mejor manera, pero todo parece sugerir que mis datos no están formateados correctamente en la entrada.

Dado lo poderosa que es la R, me imagino que hay una manera muy fácil de obligar a mi columna a tener fechas válidas y que estoy pasando por alto una solución muy obvia.

Cualquier ayuda que puede proporcionar será muy apreciada.


Puede estar complicando las cosas, ¿hay alguna razón por la que necesite el paquete stringr?

df <- data.frame(Date = c("10/9/2009 0:00:00", "10/15/2009 0:00:00")) as.Date(df$Date, "%m/%d/%Y %H:%M:%S")

[1] "2009-10-09" "2009-10-15"

De manera más general, y si también necesita el componente de tiempo, use strptime:

strptime(df$Date, "%m/%d/%Y %H:%M:%S")

Supongo que los datos parciales de los resultados parciales podrían tener en cuenta los datos reales.


library(lubridate) si su formato de fecha es como este ''04 / 24/2017 05: 35: 00'' entonces, cámbielo como abajo prods.all$Date2<-gsub("/","-",prods.all$Date2) luego cambie el formato de fecha parse_date_time(prods.all$Date2, orders="mdy hms")