Trucos SAS. Pasar fecha a caracter en SAS

11 Abr

Pasar números a carácter en SAS es un tema reiterativo tanto en entradas al blog como en búsquedas. Pero que 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 que 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 un fecha-hora con formato español, en este caso no tiene mucho sentido
  • 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.

8 respuestas a «Trucos SAS. Pasar fecha a caracter en SAS»

  1. Hola,

    cómo sería para pasar de variable numerica a caracter (string) lo digo porque habitualmente tu aplicas un proc format, pero luego la variable sigue siendo numerica, y por ejemplo si defines intervalos, éso ya no lo puedes cambiar. Sabéis algun truco? Gracias! Alicia

  2. hola que tal, me podrían ayudar con lo siguiente?

    tengo una variable alfanumérica x=200105
    y quiero convertirla a c=may01 (en español)

    hice esto pero no sale

    c=put(x,ESPDFMY.);

    ojalá pueda ayudarme!nn1

  3. Hola,

    Tengo una variable llamada hora_llamada con formato alfanumérico $8. con valores como este, por ejemplo: 10.26.08
    ¿Cómo puedo pasar este valor a formato hora time8.?

    Gracias, de antemano

Deja una respuesta

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