Macro de SAS fácil y rápida que nos permite saber el número de días que tiene el mes de una fecha de SAS. La tenía para la automatización de un código que con una media y daba guerra cuando se trataba de un año bisiesto. 3 líneas de código:

%macro dias(fec);((&fec-day(&fec)+1)+31-day((&fec-day(&fec)+1)+31))-(&fec-day(&fec))
%mend;

El razonamiento es sencillo. Se trata de poner a día 1 la fecha que le pasamos, irnos un mes después y hacer la diferencia. Por supuesto copiáis y pegáis el ejemplo en el editor:

data uno;
y="03FEB02"d; x=%dias(y); put x=;
y="01FEB04"d; x=%dias(y); put x=;
y="14MAR05"d; x=%dias(y); put x=;
y="10APR11"d; x=%dias(y); put x=;
run;

Creo que puede ser de utilidad y también tiene algún otro aspecto interesante sobre macros y la falta de algún signo de puntuación. Saludos.

2 pensiamientos en “Macros (fáciles) de SAS. Días de un mes en una fecha

  • Rodrigo

    Está muy bien la solución que ofreces. Otra solución menos compleja podría ser:

    %macro dias(fec);
    day(intnx(‘month’,&fec,0,”E”))
    %mend;

    Responder
  • rvaquerizo

    No veas si me da miedo jugar con la base de la función intnx. Pero otra solución más. ¿Sigues en ese banco naranja?

    Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *