# [R-sig-finance] Problems with monthly sequences

Gabor Grothendieck ggrothendieck at gmail.com
Sun Feb 5 19:14:42 CET 2006

```>From your series of posts I assume you really only need the last day
of the month that is m months from now but the following could easily
be enhanced to work in general.  It uses the yearmon class from zoo.
It works with positive and negative m:

library(zoo)
m <- -10
date.t <- date.s
date.t at Data <- as.POSIXlt(as.Date(as.yearmon(as.POSIXct(date.s))+m/12, frac=1))

On 2/5/06, Wojciech Slusarski <wojciech.slusarski at gmail.com> wrote:
> I thought a bit about the function below, and see a problem, when n<0 (I
> would like to decrease the date.s by one month). I still have no Idea how to
> implement it.
>
> Best regards,
> Wojtek
>
>
> 2006/2/5, Wojciech Slusarski <wojciech.slusarski at gmail.com>:
> >
> > Well,
> >
> > Thanks for the help, but I thought about something more general, that
> > could allow me adding n months to a date. I am sorry, that my question
> > wasn't so clear. If someone needed, here's the code:
> >
> >
> > EMONTH =
> > function(date.s, n)
> > {
> >   #function adds 'n' months to 'date.s'
> >   dates = timeSequence(from = format(date.s at Data, "%Y-%m-%d"), length.out= n+1, by = "month")
> >   if(atoms(date.s)[1,"d"]>28)
> >   {
> >       if(atoms(dates)[n+1,"d"]<4)
> >    {
> >       emonth = dates[n+1]-atoms(dates)[n+1,"d"]*24*3600
> >    } else {
> >      emonth = dates[n+1]
> >    }
> >   } else {
> >     emonth = dates[n+1]
> >   }
> >   emonth
> > }
> >
> >
> >
> > # test
> >
> > date.s = timeDate("2005-12-30")
> >
> > > EMONTH(date.s, 2)@Data
> > [1] "2006-02-28"
> > Best regards,
> > Wojtek
> >
> >
> > 2006/2/5, Diethelm Wuertz <wuertz at itp.phys.ethz.ch>:
> > >
> > > Gabor Grothendieck wrote:
> > >
> > > >Try this:
> > > >
> > > >library(fCalendar)
> > > >dates <- timeSequence(from = "2005-12-1", to = "2006-12-1", format =
> > > >"%Y-%m-%d", by="month", FinCenter = "Europe/Warsaw")
> > > >dates <- timeLastDayInMonth(dates)
> > > >
> > > >
> > > Alternatively you can use
> > >
> > > > timeSequence(from = "2006-01-01", to = "2007-01-01", format =
> > > + "%Y-%m-%d", by="month", FinCenter = "Europe/Warsaw") - 3600*24
> > > [1] "Europe/Warsaw"
> > > [1] [2005-12-31] [2006-01-31] [2006-02-28] [2006-03-31] [2006-04-30]
> > > [6] [2006-05-31] [2006-06-30] [2006-07-31] [2006-08-31] [2006-09-30]
> > > [11] [2006-10-31] [2006-11-30] [2006-12-31]
> > >
> > > Please use proper ISO-8601 notation: 2006-01-05 and not 2006-1-5 !
> > >
> > > DW
> > >
> > > >
> > > >On 2/4/06, Wojciech Slusarski < wojciech.slusarski at gmail.com> wrote:
> > > >
> > > >
> > > >>Dear R users,
> > > >>
> > > >>Could anyone help me with creating a monthly series of dates?
> > > >>When I try to do:
> > > >>
> > > >>dates = timeSequence(from = "2005-12-31", to = "2006-12-31", format =
> > > >>"%Y-%m-%d", by="month", FinCenter = "Europe/Warsaw")
> > > >>
> > > >>I get:
> > > >>
> > > >>
> > > >>
> > > >>>dates
> > > >>>
> > > >>>
> > > >>[1] "Europe/Warsaw"
> > > >> [1] [2005-12-31] [2006-01-31] [2006-03-03] [2006-03-31] [2006-05-01]
> > > >> [6] [2006-05-31] [2006-07-01] [2006-07-31] [2006-08-31] [2006-10-01]
> > > >>[11] [2006-10-31] [2006-12-01] [2006-12-31]
> > > >>
> > > >>Unfourtunately, I would like to heave end of month at each point.
> > > >>I thought, that maybe using this function would also help when trying
> > > >>a month to a date. I would like to have
> > > >>
> > > >>"2006-01-31" + 1M = "2006-02-28"
> > > >>
> > > >>in MS EXCEL I would use EDATE("2006-01-31";1), and that would work. I
> > > >>couldn't find any similar function in R for that. Am I missing some
> > > >>function?
> > > >>
> > > >>Best regards,
> > > >>Wojtek
> > > >>
> > > >>       [[alternative HTML version deleted]]
> > > >>
> > > >>_______________________________________________
> > > >> R-sig-finance at stat.math.ethz.ch mailing list
> > > >>https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> > > >>
> > > >>
> > > >>
> > > >
> > > >_______________________________________________
> > > >R-sig-finance at stat.math.ethz.ch mailing list
> > > > https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> > > >
> > > >
> > > >
> > >
> > > _______________________________________________
> > > R-sig-finance at stat.math.ethz.ch mailing list
> > > https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> > >
> >
> >
>
>        [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-finance at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
>

```