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 <duffn...@googlemail.com> > *To:* Dave Evens <daveeve...@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]] ______________________________________________ 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.