Calcite | Level 5

## calculate leap year thru sas?

how to calculate leap year thru SAS.

In case if i have value say year 2000 its divisible by 4 so its called as leap year.

Likewise i will i have set of years say 2000 to 2012 then how can i do the calculation.

7 REPLIES 7
Onyx | Level 15

## calculate leap year thru sas?

Regards,

Haikuo

Lapis Lazuli | Level 10

## calculate leap year thru sas?

data want ;

do x = 2000 to  2012;

length leap \$3;

leap='no';

If mod(x,4)=0    then leap='YES'; /* divisible by 4 */

If mod(x,100)=0 and mod(x,400) ne 0  then leap='NO';

output;

end;

proc print;Run;

Obs      x     leap

1    2000    YES

2    2001    no

3    2002    no

4    2003    no

5    2004    YES

6    2005    no

7    2006    no

8    2007    no

9    2008    YES

10    2009    no

11    2010    no

12    2011    no

13    2012    YES

Linlin

Opal | Level 21

## calculate leap year thru sas?

or, just let SAS do the work:

data leaptest;

do year=1996 to 2015;

leapyear=ifc(input(catt('29','feb',year), ? date9.),'yes','no');

output;

end;

run;

Quartz | Level 8

## Re: calculate leap year thru sas?

Of course the MOD technique will fail in the year 2100.

SAS Super FREQ

## Re: calculate leap year thru sas?

date = mdy(02,29,year);

returns a valid value is YEAR is a leap year and a missing value otherwise.

Obsidian | Level 7

## Re: calculate leap year thru sas?

This work great. Thank you.  What if I wanted to modify the program to create a new data set that will have leap years as only observations between two given dates?

Community Manager

## Re: calculate leap year thru sas?

You could begin by creating a data set with just the leap years.  Using the trick from @Rick_SAS:

``````data leap_years(keep=year);
length date 8;
do year=2000 to 2200;
/* MISSING when Feb 29 not a valid date */
date=mdy(2,29,year);
if not missing(date) then
output;
end;
run;``````

Then you could join/merge or exclude dates from your reference data set based on the years that appear in the results of this program.  See more explanation in my blog post on this: SAS knows it's a leap year; do you?

Discussion stats
• 7 replies
• 7498 views
• 7 likes
• 8 in conversation