Method 1: Age=FLOOR((INTCK('month',dob,eventdate)-(day(eventdate)<day(dob)))/12)
Method 2: Age= INTCK('year',dob,eventdate,"Continuous")
Hi I was wondering if two methods above have the same function on calculating Age based on DOB.
Thanks a lot
YRDIF actually accepts "AGE" as third argument and returns an age with a fractional part. So
floor(YRDIF(birthDate, today(),"AGE"))
is another way to get the current age in years.
No, the results will differ sometimes.
Method 2 will give you the exact age.
Method 1 will sometimes give you the wrong result when eventdate occurs in the same month as dob.
Hi PG,
I tried one example, somehow, two methods gave me the same result (see age and age2).
%macro age(date,birth);
floor ((intck('month',&birth,&date) - (day(&date) < day(&birth))) / 12)
%mend age;
data c;
WeddingDay='19may2000'd;
Today='18MAY2016'd;
age=%age(Today,WeddingDay);
age1=intck('year',WeddingDay,Today,"D");
age2=intck('year',WeddingDay,Today,"C");
run;
May also want to investigate YRDIF with the 'ACT/ACT' option.
YRDIF actually accepts "AGE" as third argument and returns an age with a fractional part. So
floor(YRDIF(birthDate, today(),"AGE"))
is another way to get the current age in years.
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.