No penséis que restar dos fechas y obtener una diferencia en años entre ellas es un tema baladí. Ejecutad el siguiente código SAS para calcular la diferencia en años:
data uno;
format fecha1 ddmmyy10.;
do fecha1 = 9000 to today();
output;
end;
run;
data uno_edad;
set uno;
format fecha2 ddmmyy10.;
fecha2 = "15MAY2014"d;
edad = int((fecha2 - fecha1) / 365.25);
run;
data uno_filtro;
set uno_edad;
if month(fecha1) = 5 and day(fecha1) = 15;
run;
Visualizad el conjunto de datos uno_filtro; la serie de edad asusta: 28, 28, 27, 25, 24, 24… Está claro que algo falla. Hace ya tiempo que hablamos de ello en este mismo blog. Los ceros y los unos con los que guardan estas máquinas las cosas a veces nos juegan estas malas pasadas. Para evitar este problema, os sugiero que empleéis la función de SAS YRDIF con la base 'AGE'. Replicamos el ejemplo:
data uno;
format fecha1 ddmmyy10.;
do fecha1 = 9000 to today();
output;
end;
run;
data uno_edad;
set uno;
format fecha2 ddmmyy10.;
fecha2 = "15MAY2014"d;
edad = int(yrdif(fecha1, fecha2, 'AGE'));
run;
data uno_filtro;
set uno_edad;
if month(fecha1) = 5 and day(fecha1) = 15;
run;
Ahora nuestra serie sí es 29, 28, 27, 26, 25… Ya sabéis: tened cuidado a la hora de calcular edades porque SAS parece que trabaja hasta con la hora del nacimiento para calcular edades. Saludos.