Skip to content

Adding to the years ...

2 messages · Rolf Turner, Gabor Grothendieck

#
I have a character vector of dates, comme ci:

  > irving
  [1] "12/05/1987" "11/07/1986" "08/29/1987" "01/26/1988" "06/21/1988"
  [6] "03/17/1987" "02/24/1988" "10/04/1986" "03/19/1987" "01/02/1987"

For reasons best known to myself ( ;-) ) I want to add six years to the
year in each of these dates.

After reading TFM about POSIXct and POSIXlt objects I figured out that I
could do:

	clyde <- as.POSIXlt(irving,format="%m/%d/%Y")
	clyde$year <- clyde$year + 6
	melvin <- format(clyde,"%m/%d/%Y")

This seems to me however to be a bit of a kludge.  Is there a way of
converting a character vector of dates to a POSIXlt/POSIXct/Date/ 
whatever
object and then adding 6 years to the latter object in a straightforward
way, without having to delve into components of the object?

Ta.

	cheers,

		Rolf Turner

######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}
#
There is some question of what should be returned if its Feb 29th and
in 6 years Feb only has 28 days; however, that aside
try this which does not involve any internals and works for both Date
and chron dates:
+ for(i in seq_along(x)) x[i] <- tail(seq(x[i], len = 7, by = "year"), 1)
+ x
+ }
[1] "2006-02-28" "2006-03-01" "2006-03-01"
[1] 02/28/06 02/28/06 03/01/06
On Mon, Nov 23, 2009 at 9:06 PM, Rolf Turner <r.turner at auckland.ac.nz> wrote: