Hello, I would like to be able to calculate the age of someone at a particular date. Both dates are date objects. Here is what I have come up with: floor(as.numeric(sampleInfo$Date.of.DIAGNOSIS-sampleInfo$Date.of.birth)/365.25) Is this the best approach? or is there an inbuilt function? I have looked at difftime but that does not seem to allow output in years. Many thanks Dan -- ************************************************************** Daniel Brewer, Ph.D. Institute of Cancer Research Email: daniel.brewer at 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 addre...{{dropped}}
Wayne.W.Jones at shell.com
2007-Sep-24 10:37 UTC
[R] Calculate difference between dates in years
look at the as.Date function e.g. as.Date("2007-04-21")- as.Date("2000-04-21") also look at the chron library. Regards Wayne -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]On Behalf Of Daniel Brewer Sent: 24 September 2007 11:23 To: r-help at stat.math.ethz.ch Subject: [R] Calculate difference between dates in years Hello, I would like to be able to calculate the age of someone at a particular date. Both dates are date objects. Here is what I have come up with: floor(as.numeric(sampleInfo$Date.of.DIAGNOSIS-sampleInfo$Date.of.birth)/365.25) Is this the best approach? or is there an inbuilt function? I have looked at difftime but that does not seem to allow output in years. Many thanks Dan -- ************************************************************** Daniel Brewer, Ph.D. Institute of Cancer Research Email: daniel.brewer at 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 =\ ad...{{dropped}}
Daniel Brewer wrote:> > I would like to be able to calculate the age of someone at a particular > date. Both dates are date objects. Here is what I have come up with: > > floor(as.numeric(sampleInfo$Date.of.DIAGNOSIS- > sampleInfo$Date.of.birth)/365.25) > > Is this the best approach? >No - leap years and such. You know that there are _not_ 365.25 days in one year, don't you? floor(as.numeric(as.Date("2100-02-28") - as.Date("1900-02-28"))/365.25) # 199, should be 200 A less extreme counter-example: floor(as.numeric(as.Date("2008-02-28") - as.Date("2007-02-28"))/365.25) # 0, should be 1 Alberto Monteiro (purely destructive - sorry)