Re: [R] adding 1 month to a date

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Thu 13 Oct 2005 - 02:26:50 EST

The chron package will do that:

> library(chron)
> seq(chron("01/31/00"), by = "months", len = 2)[2]
[1] 02/29/00

On 10/12/05, Jim Porzak <jporzak@gmail.com> wrote:
> OTOH,
>
> > seq(as.Date("2004-01-31"), by = "month", length = 14)
> [1] "2004-01-31" "2004-03-02" "2004-03-31" "2004-05-01" "2004-05-31"
> [6] "2004-07-01" "2004-07-31" "2004-08-31" "2004-10-01" "2004-10-31"
> [11] "2004-12-01" "2004-12-31" "2005-01-31" "2005-03-03"
>
> I would prefer to see dates forced to be within each month, not
> "leaking" into next month.
>
> IOW:
> [1] "2004-01-31" "2004-02-29" "2004-03-31" "2004-04-30" "2004-05-31", etc
>
>
> --
> Jim Porzak
> Loyalty Matrix Inc.
> San Francisco, CA
>
>
> > On 10/12/05, Marc Schwartz <MSchwartz@mn.rr.com> wrote:
> > > Thanks to Prof. Ripley for pointing this out.
> > >
> > > One of the approaches that I had considered here was to set up a vector
> > > of the number of days in each month (adjusting of course for leap
> > > years), and use "day arithmetic" to add/subtract the appropriate number
> > > of days.
> > >
> > > However, it was easier to use seq.Date() and to further consider putting
> > > a wrapper around it to make it yet even easier to use.
> > >
> > > Marc
> > >
> > > On Wed, 2005-10-12 at 13:23 +0100, Prof Brian Ripley wrote:
> > > > On Wed, 12 Oct 2005, bogdan romocea wrote:
> > > >
> > > > > Simple addition and subtraction works as well:
> > > > > as.Date("1995/12/01",format="%Y/%m/%d") + 30
> > > > > If you have datetime values you can use
> > > > > strptime("1995-12-01 08:00:00",format="%Y-%m-%d %H:%M:%S") + 30*24*3600
> > > > > where 30*24*3600 = 30 days expressed in seconds.
> > > >
> > > > Sorry, not in general, as a month is not generally of 30 days (including
> > > > in your example).
> > > >
> > > > seq.Date is a good way to do this.
> > > >
> > > > >
> > > > >
> > > > >> -----Original Message-----
> > > > >> From: Marc Schwartz [mailto:MSchwartz@mn.rr.com]
> > > > >> Sent: Tuesday, October 11, 2005 10:16 PM
> > > > >> To: t c
> > > > >> Cc: r-help@stat.math.ethz.ch
> > > > >> Subject: Re: [R] adding 1 month to a date
> > > > >>
> > > > >>
> > > > >> On Tue, 2005-10-11 at 16:26 -0700, t c wrote:
> > > > >>> Within an R dataset, I have a date field called date_.
> > > > >> (The dates are
> > > > >>> in the format YYYY-MM-DD, e.g. 1995-12-01.)
> > > > >>
> > > > >>> How can I add or subtract 1 month from this date, to get
> > > > >> 1996-01-01 or
> > > > >>> 1995-11-01.
> > > > >>
> > > > >> There might be an easier way to do this, but using seq.Date(), you can
> > > > >> increment or decrement from a Time 0 by months:
> > > > >>
> > > > >> Add 1 month:
> > > > >>
> > > > >> This takes your Time 0, generates a 2 element sequence (which begins
> > > > >> with Time 0) and then takes the second element:
> > > > >>
> > > > >>> seq(as.Date("1995-12-01"), by = "month", length = 2)[2]
> > > > >> [1] "1996-01-01"
> > > > >>
> > > > >>
> > > > >>
> > > > >> Subtract 1 month:
> > > > >>
> > > > >> Same as above, but we use 'by = "-1 month"' and take the
> > > > >> second element:
> > > > >>
> > > > >>> seq(as.Date("1995-12-01"), by = "-1 month", length = 2)[2]
> > > > >> [1] "1995-11-01"
> > > > >>
> > > > >>
> > > > >> See ?as.Date and ?seq.Date for more information. The former
> > > > >> function is
> > > > >> used to convert from a character vector to a Date class object. Note
> > > > >> that in your case, the date format is consistent with the default. Pay
> > > > >> attention to the 'format' argument in as.Date() if your dates
> > > > >> should be
> > > > >> in other formats.
> > > > >>
> > > > >> HTH,
> > > > >>
> > > > >> Marc Schwartz
> > >
> > > ______________________________________________
> > > R-help@stat.math.ethz.ch mailing list
> > > https://stat.ethz.ch/mailman/listinfo/r-help
> > > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
> > >
> >
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Thu Oct 13 06:49:49 2005

This archive was generated by hypermail 2.1.8 : Sun 23 Oct 2005 - 18:49:07 EST