una separar ordenar obtener numero mes manipulacion hora filtrar fechas fecha extraer convertir agrupar r lubridate

separar - ordenar fechas en r



Crear un vector de todos los días entre dos fechas (2)

¿Hay alguna manera fácil en R para detallar todos los días válidos que ocurrieron entre dos fechas especificadas? Por ejemplo, me gustaría las siguientes entradas:

itemizeDates(startDate="12-30-11", endDate="1-4-12")

Para producir las siguientes fechas:

"12-30-11" "12-31-11", "1-1-12", "1-2-12", "1-3-12", "1-4-12"

Soy flexible en las clases y el formato de las fechas, solo necesito una implementación del concepto.


Prefiero usar el paquete lubridate para resolver problemas de fecha y hora. Es más intuitivo y fácil de entender y usar una vez que lo sabes.

library(lubridate) #mdy() in lubridate package means "month-day-year", which is used to convert #the string to date object >start_date <- mdy("12-30-11") >end_date <- mdy("1-4-12") #calculate how many days in this time interval >n_days <- interval(start_date,end_date)/days(1) >start_date + days(0:n_days) [1]"2011-12-30" "2011-12-31" "2012-01-01" "2012-01-02" "2012-01-03" "2012-01-04" #convert to original format format(start_date + days(0:n_days), format="%m-%d-%y") [1] "12-30-11" "12-31-11" "01-01-12" "01-02-12" "01-03-12" "01-04-12"

Referencia: fechas y horarios fáciles con lubridate


Usted está buscando seq

> seq(as.Date("2011-12-30"), as.Date("2012-01-04"), by="days") [1] "2011-12-30" "2011-12-31" "2012-01-01" "2012-01-02" "2012-01-03" [6] "2012-01-04"

O bien, puedes usar :

> as.Date(as.Date("2011-12-30"):as.Date("2012-01-04"), origin="1970-01-01") [1] "2011-12-30" "2011-12-31" "2012-01-01" "2012-01-02" "2012-01-03" [6] "2012-01-04"

Aquí hay una función para satisfacer su solicitud específica

itemizeDates <- function(startDate="12-30-11", endDate="1-4-12", format="%m-%d-%y") { out <- seq(as.Date(startDate, format=format), as.Date(endDate, format=format), by="days") format(out, format) } > itemizeDates(startDate="12-30-11", endDate="1-4-12") [1] "12-30-11" "12-31-11" "01-01-12" "01-02-12" "01-03-12" "01-04-12"