ordenar - obtener el mes de una fecha en r
Obtención de la fecha de inicio del mes anterior y la fecha de finalización de la fecha actual en R (5)
Fecha de inicio del mes anterior:
format(Sys.Date() - 30, ''%Y-%m-01'')
Fecha de finalización del mes anterior:
as.Date(format(Sys.Date(), ''%Y-%m-01'')) - 1
¿Hay alguna forma fácil de obtener la fecha de inicio y la fecha de finalización del mes anterior a partir de la fecha actual en R?
Solo tengo la fecha actual. De ahí, quiero obtener el mes anterior, fecha de inicio del mes anterior, fecha de finalización del mes anterior.
currentDate<-Sys.Date() #return today''s date as "2012-11-07"
Quiero la fecha de inicio del mes anterior como 2012-10-01 y la fecha de finalización como 2012-10-31 a partir de la fecha de hoy.
Otra opción con el paquete lubridate es usar la función de reversión , que como dice la descripción, hace exactamente eso.
la reversión cambia una fecha al último día del mes anterior o al primer día del mes. Opcionalmente, la nueva fecha puede conservar la misma hora, minuto y segunda información.
library(lubridate)
currentDate <- Sys.Date()
end_last_month <- rollback(currentDate)
init_last_month <- rollback(end_last_month, roll_to_first = TRUE)
Puede usar la biblioteca lubridate
, que es muy buena para hacer aritmética de fechas.
library(lubridate)
currentDate <-Sys.Date()
# end of previous month:
eopm <- currentDate - days(day(currentDate))
# [1] "2012-10-31"
# start of previous month:
sopm <- currentDate - days(day(currentDate))
sopm <- sopm - days(day(sopm) - 1)
# [1] "2012-10-01"
Un número de paquetes tienen funciones de fecha útiles, pero para rodar las suyas propias:
Una función de inicio de mes:
som <- function(x) {
as.Date(format(x, "%Y-%m-01"))
}
y una función de fin de mes (aunque no la necesitarás aquí):
eom <- function(x) {
som(som(x) + 35) - 1
}
Eso te ayudara a llegar. Por ejemplo, para obtener el final del mes anterior:
som(Sys.Date()) - 1
[1] "2012-10-31"
y el comienzo del mes:
som(som(Sys.Date()) - 1)
[1] "2012-10-01"
Usando lubridate
es un pedazo de pastel:
library(lubridate)
floor_date(Sys.Date() - months(1), "month")
Hay muchas bibliotecas buenas en R. Parece que todo lo que necesitas ya está creado.
Versión actualizada:
library(lubridate)
floor_date(as.Date("2011-03-29"), "month") - months(1)
Éste está corregido para funcionar bien con el 29 de marzo.