Hi,
When trying to calculate the age using death and birth dates, leaves output as 50.7677488 etc. However, displaying values like this 51 is expected instead of 50.7677488.
data data1_; attrib BRTHDAT_ DTHDAT_ length=8 format=date9.; attrib AGE_D length=3; set data1; if BRTHDAT ne . then BRTHDAT_=datepart(BRTHDAT); if DTHDAT ne . then DTHDAT_=datepart(DTHDAT); if DTHDAT_ ne . and BRTHDAT_ ne . then do; AGE_D=(DTHDAT_ - BRTHDAT_)/365.25; end; proc sort data=data1_; by SUBJECT; run;
Attached is the code.
Any correction that has to be made to display the age right?
Thank you,
Regards,
Nasya
I imagine you are looking for the age to be rounded:
if DTHDAT_ ne . and BRTHDAT_ ne . then do;
AGE_D= round((DTHDAT_ - BRTHDAT_)/365.25);
end;
Alternatively, leave the calculations as they are, but change the attributes of AGE_D:
attrib AGE_D length=8 format=3.;
can ceil function help?
if DTHDAT_ ne . and BRTHDAT_ ne . then do; AGE_D=ceil((DTHDAT_ - BRTHDAT_)/365.25);
or using yrdif and ceil
age=ceil(yrdif(brthdat_, dthdat_, 'AGE'));
I imagine you are looking for the age to be rounded:
if DTHDAT_ ne . and BRTHDAT_ ne . then do;
AGE_D= round((DTHDAT_ - BRTHDAT_)/365.25);
end;
Alternatively, leave the calculations as they are, but change the attributes of AGE_D:
attrib AGE_D length=8 format=3.;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.