Trucos SAS. Errores y formatos

Abril 19th, 2012 por rvaquerizo

Un truco SAS que puede ayudar a todos aquellos que estén empezando a programar en SAS. Hay ocasiones que trabajamos con datasets que tienen formatos y nos encontramos con el error: "formato FMT no se ha encontrado o no se ha podido cargar". ¿Qué hacer? Lo primero es jugar con la opción FMTERR:

options nofmterr;

Esta opción de SAS nos permite trabajar con conjuntos de datos SAS con formatos aunque no estén cargados porque no se tienen en cuenta los errores. Por otro lado podemos emplear PROC DATASETS para eliminar todos los formatos (entrada y/o salida) de un conjunto de datos SAS, el código es el siguiente:


proc datasets lib=librer;
modify conjunto_datos;
format _all_;
informat _all_;
quit;

Eliminamos todos los formatos de un conjunto de datos SAS de forma instantánea. También podemos eliminar sólo los numéricos con _NUM_ o los alfanuméricos con _CHAR_. Espero que estas líneas os ayuden. Saludos.

Tags: , , ,

Trucos SAS. Pasar fecha a caracter en SAS

Abril 11th, 2012 por rvaquerizo

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.

Tags: ,