Tengo un yearmon
objeto:
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 ?yearmon
y ?strftime
para obtener más detalles: este último explica los caracteres de marcador de posición que puede usar.
vector
de n elementos, digamos 1k fechas en unovector
?date1
puede ser un vector de fechas.El paquete lubridate es asombroso para este tipo de cosas:
fuente
lubridate
paquete 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
zoo
aquí, pero encontré este hilo buscando en Google unats
solución estándar para el mismo problema. Así que pensé en agregar unazoo
respuesta gratuita parats
también.fuente
Puede utilizar
format
:fuente
as.numeric(format(x, "%m"))
el mes como numérico, por ejemplo.Para vectores grandes:
fuente
POSIXlt
objeto ú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