Help using Base SAS procedures

Age from BirthDate!

Accepted Solution Solved
Reply
Super Contributor
Posts: 1,040
Accepted Solution

Age from BirthDate!

Hi,

I have a date(DOB) and I want to know the years?

example:

DOB

12sep1982

I want something like(probably not in decimals)

AGE:

31

Thanks


Accepted Solutions
Solution
‎09-12-2013 09:24 PM
Regular Contributor
Posts: 217

Re: Age from BirthDate!

[ Edited ]

You may like to read this -

 

Age Is Just a Number: Accurately Calculating Integer and Continuous Age by Sara Adams and Chris Colby, ICON Clinical Research, San Francisco, CA

 

The paper discusses integer age and continuous age -- and methods to calculate each.

 

And from @Tom:

If have SAS 9.3 or higher use YRDIF(dob,eventdt,'AGE'); [article with examples here]

 

View solution in original post


All Replies
Super Contributor
Posts: 1,636

Re: Age from BirthDate!

data have;

format dob date9.;

input dob date9.;

cards;

02sep1982

;

data want;

set have;

age=int((today()-dob)/365.25);

proc print;run;

Super Contributor
Posts: 297

Re: Age from BirthDate!

The INTCK function measures the number of intervals between 2 dates.

DATA WANT;

SET HAVE;

AGE = INTCK('YEAR',DOB,TODAY());

RUN;

Respected Advisor
Posts: 3,894

Re: Age from BirthDate!

Using INTCK() the following would return '1' which I believe is not what you would expect to get as age:

INTCK('YEAR','31DEC2012'd,'01JAN2013'd);

Super Contributor
Posts: 297

Re: Age from BirthDate!

Agreed Patrick.  Once I read your suggestion regarding YRDIF I remembered that INTCK was the incorrect solution for this scenario.

Contributor
Posts: 66

Re: Age from BirthDate!

Hi,
When I use the INTCK function I get a message (window is full and must be cleared. Select:
F to file.
P to Print
S to save or
C to clear the window without saving

Any insights why this is happening?
Respected Advisor
Posts: 3,894

Re: Age from BirthDate!

age=YRDIF(DoB, today(), 'ACT/ACT') ;

SAS(R) 9.2 Language Reference: Dictionary, Fourth Edition

Solution
‎09-12-2013 09:24 PM
Regular Contributor
Posts: 217

Re: Age from BirthDate!

[ Edited ]

You may like to read this -

 

Age Is Just a Number: Accurately Calculating Integer and Continuous Age by Sara Adams and Chris Colby, ICON Clinical Research, San Francisco, CA

 

The paper discusses integer age and continuous age -- and methods to calculate each.

 

And from @Tom:

If have SAS 9.3 or higher use YRDIF(dob,eventdt,'AGE'); [article with examples here]

 

Contributor
Posts: 66

Re: Age from BirthDate!

Hi,
When I use the INTCK fuction I get a message (window is full and must be cleared. Select:
F to file.
P to Print
S to save or
C to clear the window without saving

Any insights why this is happening?
Super User
Super User
Posts: 6,502

Re: Age from BirthDate!

Occasional Contributor
Posts: 7

Re: Age from BirthDate!

I am trying to calculte age as well using SAS 9.4.

 

this is the code i have used but the age is off by one year. How to correct it?

*creating Mat_age*/;
MAT_AGE = (int(new_DOB - new_MomDOB)/365.25);

Community Manager
Posts: 2,762

Re: Age from BirthDate!

I think you intended to apply the INT function to the entire computed value, so you need to move a paren:

 

MAT_AGE = int( (new_DOB - new_MomDOB) /365.25);

But the better way (I think) is to use YRDIF with the AGE modifier:

 

MAT_AGE = yrdif(new_DOB, new_MomDOB,'AGE');

See: http://blogs.sas.com/content/sasdummy/2011/07/12/computing-age-in-sas-9-3/

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 11 replies
  • 16057 views
  • 9 likes
  • 9 in conversation