On 10/12/2010 4:17 PM, Barry Rowlingson wrote: > On Fri, Dec 10, 2010 at 3:27 PM, Daniel Brewer <daniel.bre...@icr.ac.uk> > wrote: >> Hello, >> >> I have some data that has dates in the form 27.02.37. I convert them to >> a date object as follows: >> as.Date(data$date,format="%d.%m.%y") >> >> But this gives me years such as 2037 when I would like them to be 1937. >> I thought of trying to take off some time i.e. >> as.Date(camCD$DoB,format="%d.%m.%y") - 100*365 >> But that doesn't seem to work out correctly. Any ideas how to do this? > > Normally to adjust dates you can use as.difftime() and do arithmetic, > but a year is a variable thing (can be 365 or 366 days) so you cant > make a difftime of years. Days are variable things if you worry about > leap seconds... > > Also, you could end up with an invalid date if you have 29-Feb-2000 > and 29-Feb-1900. One wasn't a leap year... > > A solution minus those caveats is to convert to POSIXlt and adjust the > $year element: > > > dob="27.02.37" > > as.Date(dob,format="%d.%m.%y") > [1] "2037-02-27" > > dobp = as.POSIXlt(as.Date(dob,format="%d.%m.%y")) > > dobp$year = dobp$year - 100 > > > dobp > [1] "1937-02-27 UTC" > > as.Date(dobp) > [1] "1937-02-27" > > although it might be easier to paste a '19' into your character variable > > > paste(substr(dob,1,6),"19",substr(dob,7,9),sep="") > [1] "27.02.1937" > > and then do it the way you started. Assumes you have leading zeroes on > all fields though. > > Barry
Many thanks. Thats great Dan -- ************************************************************** Daniel Brewer, Ph.D. Institute of Cancer Research Molecular Carcinogenesis Email: daniel.bre...@icr.ac.uk ************************************************************** The Institute of Cancer Research: Royal Cancer Hospital, a charitable Company Limited by Guarantee, Registered in England under Company No. 534147 with its Registered Office at 123 Old Brompton Road, London SW7 3RP. This e-mail message is confidential and for use by the a...{{dropped:2}} ______________________________________________ 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.