[R] adding 1 month to a date

Marc Schwartz MSchwartz at mn.rr.com
Wed Oct 12 04:15:46 CEST 2005


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




More information about the R-help mailing list