Réponses:
Utilisez la format()
méthode pour les objets de classe "yearmon"
. Voici votre exemple de date (correctement créé!)
date1 <- as.yearmon("Mar 2012", "%b %Y")
Ensuite, nous pouvons extraire les parties de date selon les besoins:
> format(date1, "%b") ## Month, char, abbreviated
[1] "Mar"
> format(date1, "%Y") ## Year with century
[1] "2012"
> format(date1, "%m") ## numeric month
[1] "03"
Ceux-ci sont renvoyés sous forme de caractères. Le cas échéant, indiquez as.numeric()
si vous voulez que l'année ou le mois numérique soit une variable numérique, par exemple
> as.numeric(format(date1, "%m"))
[1] 3
> as.numeric(format(date1, "%Y"))
[1] 2012
Voir ?yearmon
et ?strftime
pour plus de détails - ce dernier explique les caractères d'espace réservé que vous pouvez utiliser.
vector
de n éléments, disons 1k dates en un vector
?
date1
peut aussi être un vecteur de dates.
Le paquet lubrifiant est incroyable pour ce genre de chose:
> require(lubridate)
> month(date1)
[1] 3
> year(date1)
[1] 2012
lubridate
package et j'ai essayé de l'installer et utilisé l'année (date) mais cela donne le jour au lieu de l'année cela ne fonctionne que sur les dates dont le format est "2015-05 -06 "?
Je sais que l'OP utilise zoo
ici, mais j'ai trouvé ce fil de recherche sur Google pour une ts
solution standard pour le même problème. J'ai donc pensé que j'ajouterais également une zoo
réponse gratuite ts
.
# create an example Date
date_1 <- as.Date("1990-01-01")
# extract year
as.numeric(format(date_1, "%Y"))
# extract month
as.numeric(format(date_1, "%m"))
Vous pouvez utiliser format
:
library(zoo)
x <- as.yearmon(Sys.time())
format(x,"%b")
[1] "Mar"
format(x,"%Y")
[1] "2012"
as.numeric(format(x, "%m"))
pour le mois sous forme numérique par exemple.
Pour les grands vecteurs:
y = as.POSIXlt(date1)$year + 1900 # x$year : years since 1900
m = as.POSIXlt(date1)$mon + 1 # x$mon : 0–11
POSIXlt
objet pratique qui rend le paquet zoo inutile
La question n'indiquait pas précisément la sortie attendue, mais en supposant que pour le mois vous voulez le numéro du mois (janvier = 1) et pour l'année que vous voulez l'année numérique à 4 chiffres, en supposant que nous venons d'exécuter le code de la question:
cycle(date1)
## [1] 3
as.integer(date1)
## [1] 2012