[R] Turn dates into age

Marc Schwartz marc_schwartz at me.com
Mon Nov 9 00:53:59 CET 2009


 > Sys.Date()
[1] "2009-11-08"

 > as.Date("05/29/1971", format = "%m/%d/%Y")
[1] "1971-05-29"


 > as.numeric((Sys.Date() - as.Date("05/29/1971", format = "%m/%d/ 
%Y")) / 365.25)
[1] 38.44764

or perhaps more clearly:

EndDate <- Sys.Date()
StartDate <- as.Date("05/29/1971", format = "%m/%d/%Y")

 > as.numeric((EndDate - StartDate) / 365.25)
[1] 38.44764



We coerce to numeric here, to return a standard numeric value, rather  
than the result being of class difftime with an attribute of 'days'  
for units:

 > str((Sys.Date() - as.Date("05/29/1971", format = "%m/%d/%Y")) /  
365.25)
Class 'difftime'  atomic [1:1] 38.4
   ..- attr(*, "units")= chr "days"



HTH,

Marc Schwartz


On Nov 8, 2009, at 5:22 PM, Jim Burke wrote:

> To clarify.
>
> Lets turn a date into an age. Given 05/29/1971 in mm/dd/yyyy
> format. What is the year difference between then and today?
> This would be the "age" requested that starts 05/29/1971 as
> one.
>
> Thanks,
> Jim
>
>
>
>
> David Winsemius wrote:
>>
>> On Nov 8, 2009, at 3:11 PM, frenchcr wrote:
>>
>>>
>>>
>>> why do you use 365.25?
>>>
>>
>> As opposed to what?
>>
>> -- David
>>>
>>> dates<-as.character(data[,"date_commissioned"]); # convert dates to
>>> characters
>>> #dates[1:10]
>>> #[1] "19910101" "19860101" "19910101" "19860101" "19910101"  
>>> "19910101"
>>> "19910101" "19910101" "19910101" "19910101"
>>>
>>> dateObs <- as.Date(dates,format="%Y%m%d")
>>> #dateObs[1:10]
>>> #[1] "1991-01-01" "1986-01-01" "1991-01-01" "1986-01-01"  
>>> "1991-01-01"
>>> "1991-01-01" "1991-01-01" "1991-01-01" "1991-01-01" "1991-01-01"
>>>
>>> today <- Sys.Date()
>>> x.date <- as.Date(dateObs, format="%Y%m%d")
>>>
>>> AGE <- round(as.vector(difftime(today , x.date, units='day') /  
>>> 365.25))
>>>
>>>
>>>
>>>
>>>
>>> frenchcr wrote:
>>>>
>>>>
>>>> it sure does thank you!
>>>>
>>>>
>>>>> will this work for you
>>>>>
>>>>> x <- c('19910101', '19950302', '20010502')
>>>>> today <- Sys.Date()
>>>>> x.date <- as.Date(x, format="%Y%m%d")
>>>>> round(as.vector(difftime(today , x.date, units='day') / 365.25))
>>>> [1] 19 15  9
>>>>>
>>>>
>>>>
>>>> On Sun, Nov 8, 2009 at 2:44 PM,  <frenchcr at btinternet.com> wrote:
>>>>> Hi Jim,
>>>>>
>>>>> Thanks for the quick reply...not sure what you mean by frame of
>>>>> reference(only been using R for 4 days)...to clarify, i need to
>>>>> turn my
>>>>> dates from 1999-10-01 into 1999 then i subtract 2009 -1999 to get
>>>>> an age
>>>>> of 10. The column im working on has 312,000 rows and some have NA
>>>>> in them
>>>>> as we have no dates for that item.
>>>>>
>>>>> To recap, the column is just a bunch of dates with some field  
>>>>> empty, i
>>>>> want to change the column from "date of commision" to "age of  
>>>>> asset"
>>>>>
>>>>> Cheers
>>>>> Chris.
>>>>
>>>>
>>>>
>>>>
>>>> jholtman wrote:
>>>>>
>>>>> What is the frame of reference to determine the age?   Check out
>>>>> 'difftime'.
>>>>>
>>>>> On Sun, Nov 8, 2009 at 1:50 PM, frenchcr <frenchcr at btinternet.com>
>>>>> wrote:
>>>>>>
>>>>>> Ive got a big column of dates (also some fields dont have a date
>>>>>> so they
>>>>>> have
>>>>>> NA instead),
>>>>>> that i have converted into date format as so...
>>>>>>
>>>>>>
>>>>>> dates<-as.character(data[,"date_commissioned"]); # converted  
>>>>>> dates to
>>>>>> characters
>>>>>> dates[1:10]
>>>>>> [1] "19910101" "19860101" "19910101" "19860101" "19910101"  
>>>>>> "19910101"
>>>>>> "19910101" "19910101" "19910101" "19910101"
>>>>>>
>>>>>> dateObs <- as.Date(dates,format="%Y%m%d")
>>>>>> dateObs[1:10]
>>>>>> [1] "1991-01-01" "1986-01-01" "1991-01-01" "1986-01-01"  
>>>>>> "1991-01-01"
>>>>>> "1991-01-01" "1991-01-01" "1991-01-01" "1991-01-01" "1991-01-01"
>>>>>>
>>>>>>
>>>>>>
>>>>>> Now i need to turn the dates into AGE, how do i do it? Im not  
>>>>>> worried
>>>>>> about
>>>>>> fractions of years, whole years would do.
>>>>>>
>>>>>>
>>>>>> -- 
>>>>>> View this message in context:
>>>>>> http://old.nabble.com/Turn-dates-into-age- 
>>>>>> tp26256656p26256656.html
>>>>>> Sent from the R help mailing list archive at Nabble.com.
>>>>>>
>>>>>> ______________________________________________
>>>>>> R-help at 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.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> -- 
>>>>> Jim Holtman
>>>>> Cincinnati, OH
>>>>> +1 513 646 9390
>>>>>
>>>>> What is the problem that you are trying to solve?
>>>>>
>>>>> ______________________________________________
>>>>> R-help at 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.
>>>>>
>>>>>
>>>>
>>>>
>>>
>>> -- 
>>> View this message in context:
>>> http://old.nabble.com/Turn-dates-into-age-tp26256656p26257435.html
>>> Sent from the R help mailing list archive at Nabble.com.
>>>
>>> ______________________________________________
>>> R-help at 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.
>>
>> David Winsemius, MD
>> Heritage Laboratories
>> West Hartford, CT
>>
>> ______________________________________________
>> R-help at 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 at 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.




More information about the R-help mailing list