Pasar números a carácter en SAS es un tema reiterativo tanto en entradas al blog como en búsquedas. Pero se le puede dar otra vuelta de tuerca. Se trata de transformar fechas a variables alfanuméricas, pero en este caso vamos a poner las fechas en formato español. Ejecutad este ejemplo en SAS:

data uno;
    y = '30jan11'd;
    
    c0 = put(y, ddmmyy10.);
    c1 = upcase(put(y, ESPDFDD.));
    c2 = upcase(put(y, ESPDFDE.));
    c3 = upcase(put(y, ESPDFDN.));
    c4 = upcase(put(y, ESPDFDT.));
    c5 = upcase(put(y, ESPDFDWN.));
    c6 = upcase(put(y, ESPDFMN.));
    c7 = upcase(put(y, ESPDFMY.));
    c8 = upcase(put(y, ESPDFWDX.));
    c9 = upcase(put(y, ESPDFWKX.));
run;

Imagino que todos tenéis el NLS de SAS instalado y no tenéis problemas con estos formatos. Resumamos qué nos ofrece cada una de estas transformaciones:

  • DDMMYY10. es el más habitual y nos genera 30/01/2011; podemos jugar con la longitud.
  • ESPDFDD. genera 30.01.2011, un formato que personalmente utilizo mucho.
  • ESPDFDE. genera 30ENE2011, probablemente el más habitual.
  • ESPDFDN. genera un 7, la semana del año.
  • ESPDFDT. genera una fecha-hora con formato español (en este caso no tiene mucho sentido sin la parte de la hora).
  • ESPDFDWN. nos pone el día de la semana: DOMINGO.
  • ESPDFMN. nos pone el mes: ENERO.
  • ESPDFMY. genera ENE11, práctico para sumarizaciones.
  • ESPDFWDX. genera 30 DE ENERO DE 2011.
  • ESPDFWKX. genera DOMINGO, 30 DE ENERO DE 2011, un formato que no he usado nunca.

Estos formatos SAS los conozco gracias a un lector del blog. Al César lo que es del César: aquí aprendemos todos. Es interesante recogerlos todos juntos para que esta entrada quede como una referencia de la transformación de fechas en textos en SAS. Saludos.