R: ajouter 1 mois à une date
je veux obtenir la séquence de date entre un startDate
et endDate
en ajoutant 1 mois au startDate
. ie, si startDate
est 2013-01-31 et endDate
est 2013-07-31, je préférerais voir des dates comme ceci:
"2013-01-31" "2013-02-28" "2013-03-31" "2013-04-30" "2013-05-31" "2013-06-30" "2013-07-31"
j'ai essayé seq.Date(as.Date("2013-01-31"),by="month",length.out=7)
.
Mais la sortie de ce code est comme ceci
> seq.Date(as.Date("2013-01-31"),by="month",length.out=7)
[1] "2013-01-31" "2013-03-03" "2013-03-31" "2013-05-01" "2013-05-31" "2013-07-01" "2013-07-31"
alors, quelle est la solution la plus simple pour obtenir la bonne sortie?
2 réponses
je dois travailler avec les dates dans R, et l'un des paquets les plus utiles que j'ai trouvé pour les données de date est lubridate
. Pour votre problème, vous pouvez simplement faire ce qui suit:
require(lubridate)
# ymd function parses dates in year-month-day format
startDate <- ymd('2013-01-31')
# The %m+% adds months to dates without exceeding the last day
myDates <- startDate %m+% months(c(0:6))
lubridate
a également de nombreuses autres fonctions pour les dates, et je recommande fortement de jeter un oeil.
cela ne fonctionne pas, parce que R n'est pas sûr que faire avec le dernier jour du mois :) donc j'ai la solution simple. Faites la même chose mais utilisez le 1er jour du mois suivant et puis soustrayez 1:
seq(as.Date("2013-02-1"),by="month",length.out=7)-1
[1] "2013-01-31" "2013-02-28" "2013-03-31" "2013-04-30" "2013-05-31" "2013-06-30" "2013-07-31"