Dear Dave,
please always answer to the whole list.
To answer your question: A quick check showed that your proposed code
will not work as you expected it
> tt <- as.POSIXlt(strptime("2011-01-01 00:00:00",
"%Y-%m-%d %H:%M:%S",
tz="GMT"))
> tt
[1] "2011-01-01 GMT"
> tt+ 365.25*24*60*60
[1] "2012-01-01 06:00:00 GMT"
> tt+ 365.25*24*60*60*2
[1] "2012-12-31 12:00:00 GMT"
I am not aware of a addtime function in base package (similar to
difftime()), maybe there is one in one of the packages on cran.
A quick google search provided the following link for adding years to a
date http://tolstoy.newcastle.edu.au/R/help/05/10/13700.html, where
seq.Date() was proposed.
Regards
Adrian
Am 15.05.2011 16:25, schrieb Dave Evens:> Hi Adrian,
>
> Many thanks for your reply.
>
> Suppose I wanted to increment the date by a year - how would I account
> for things like leap years?
>
> Would I just do
> > mydaysx[select] <- mydaysx[select] + 365.25*24*60*60
>
> Regards,
> Dave
> ------------------------------------------------------------------------
> *From:* Adrian Duffner <duffnera@googlemail.com>
> *To:* Dave Evens <daveevens1@yahoo.co.uk>
> *Cc:* "r-help@r-project.org" <r-help@r-project.org>
> *Sent:* Sunday, 15 May 2011, 14:21
> *Subject:* Re: [R] changing the day of the week in dates format
>
> Hi Dave,
>
> your problem is that you are working with a S3 class, what is mainly a
> list with naming convention. Hence it is possible to change just one
> entry of the list, but it is nearly never recommendable.
>
> So a slight change to your code should provide you the required output:
> > mydaysx[select] <- mydaysx[select] + 2*24*60*60
> > select <- mydaysx$wday==6
> > sum(select)
> [1] 0
>
> In this case not only the entry $mday of the list is changed, but the
> whole object is updated.
>
> Cheers
> Adrian
>
> Am 14.05.2011 20:44, schrieb Dave Evens:
> > Dear all,
> >
> > I have a question related to the POSIXlt function in R.
> >
> > I have a set of dates and times, for exmaple:
> >
> > startx<- as.POSIXct("2011-01-01 00:00:00")
> > finx<- as.POSIXct("2011-12-31 00:00:00")
> >
> > daysx<- seq(startx, finx, by="24 hours")
> >
> > I
> > want to change the dates of all the days falling on a Saturday to the
> > next working day (i.e. Monday). So I convert dates to POSIXlt
> >
> > mydaysx<- as.POSIXlt(daysx)
> >
> > Then I change select all the Saturday's and move them on to Monday
> >
> > select<- mydaysx$wday==6
> > mydaysx$mday[select]<- mydaysx$mday[select] + 2
> >
> > However,
> > although all the new dates (i.e. mydaysx) are actual days of the year
-
> > the $wday have not been updated and the $mdays have not all been
> > corrected (i.e. those falling into the next month). So if I do
> >
> > select<- mydaysx$wday==6
> >
> > I still get the same set of days as before.
> >
> > Is there a way to do this?
> >
> > Thanks,
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help@r-project.org <mailto:R-help@r-project.org> mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> >
>
>
>
[[alternative HTML version deleted]]