data birth; input name $ bday :mmddyy10.; datalines; Miguel 12/31/1973 Joe 02/28/1976 Rutger 03/29/1976 Broguen 03/01/1976 Susan 12/12/1976 Michael 02/14/1971 LeCe 11/09/1967 Hans 07/02/1955 Lou 07/30/1960 ;
data ages;
set birth;
retain current;
if _n_=1 then current=today();
format bday current worddate20.;
age=int(intck('month',bday,current)/12);
if month(bday)=month(current) then age=age-(day(bday)>day(current));
run;
proc print;
run;
How is the if condition solved here?Can someone explain it?Thanks.
That is comparison that returns true/false or 1/0. So if day(bday)>day(current) is true it becomes 1 and the equation becomes:
age=age-1;
otherwise it becomes:
age=age-0;
You can test it via
Y=day(bday)>day(current);
There's some details and comparisons on these formula's here:
https://communities.sas.com/thread/39473
I think intck with age option also calculates age correctly as of SAS 9.3+
Which if condition?
The first states uses the automatic variable _n_, which essentially states if this is the first record in the dataset set the variable current to today.
Sorry for not being clear,the second if.(day(bday)>day(current)
That is comparison that returns true/false or 1/0. So if day(bday)>day(current) is true it becomes 1 and the equation becomes:
age=age-1;
otherwise it becomes:
age=age-0;
You can test it via
Y=day(bday)>day(current);
There's some details and comparisons on these formula's here:
https://communities.sas.com/thread/39473
I think intck with age option also calculates age correctly as of SAS 9.3+
SAS evaluates the expression in an IF-THEN statement to produce a result that is either True or False (1 or 0). A result of zero causes the expression to be false, while a nonzero result causes the expression to be true.
Back to your question,
The MONTH function returns a numeric value that represents the month from a SAS date value. Numeric values can range from 1 (Jan.) through 12 (Dec.).
If month(bday)=month(current) means if the month of variable ‘bday’ is equal to current month.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 16. Read more here about why you should contribute and what is in it for you!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.