Tengo un yearmonobjeto:
require(zoo)
date1 <- as.yearmon("Mar 2012", "%b %Y")
class(date1)
# [1] "yearmon"
¿Cómo puedo extraer el mes y el año de esto?
month1 <- fn(date1)
year1 <- fn(date1)
¿Qué función debo usar en lugar de fn()
Usa el format()método para objetos de clase "yearmon". Aquí está su fecha de ejemplo (¡creada correctamente!)
date1 <- as.yearmon("Mar 2012", "%b %Y")
Luego, podemos extraer las partes de la fecha según sea necesario:
> format(date1, "%b") ## Month, char, abbreviated
[1] "Mar"
> format(date1, "%Y") ## Year with century
[1] "2012"
> format(date1, "%m") ## numeric month
[1] "03"
Estos se devuelven como caracteres. Cuando corresponda, ingrese as.numeric()si desea el año o el mes numérico como variable numérica, p. Ej.
> as.numeric(format(date1, "%m"))
[1] 3
> as.numeric(format(date1, "%Y"))
[1] 2012
Consulte ?yearmony ?strftimepara obtener más detalles: este último explica los caracteres de marcador de posición que puede usar.
vectorde n elementos, digamos 1k fechas en unovector?date1puede ser un vector de fechas.El paquete lubridate es asombroso para este tipo de cosas:
fuente
lubridatepaquete no soporta e intenté instalar este y usé año (fecha) pero da el día en lugar del año ¿Esto solo funciona en fechas cuyo formato es "2015-05 -06 "?Sé que el OP está usando
zooaquí, pero encontré este hilo buscando en Google unatssolución estándar para el mismo problema. Así que pensé en agregar unazoorespuesta gratuita paratstambién.fuente
Puede utilizar
format:fuente
as.numeric(format(x, "%m"))el mes como numérico, por ejemplo.Para vectores grandes:
fuente
POSIXltobjeto útil que hace que el paquete zoológico sea innecesarioLa pregunta no indicó con precisión qué resultado se esperaba, pero suponiendo que para el mes desea el número de mes (enero = 1) y para el año desea el año numérico de 4 dígitos, entonces asumiendo que acabamos de ejecutar el código en la pregunta:
fuente
Habiendo tenido un problema similar con los datos desde 1800 hasta ahora, esto funcionó para mí:
fuente