Truco SAS. Crear ficheros Excel sin PROC EXPORT (II)

Con anterioridad hemos visto el manejo del ODS y como nos sirve para generar archivos HTML que podemos usar con Excel sin necesidad de emplear el PROC EXPORT. Pero el lenguaje SAS empleado era complicado y requería muchas líneas de código. Pues esto podemos evitarlo si creamos nuestra propia macro para exportar nuestras tablas SAS a tablas Excel.

«Simplemente» hemos de parametrizar el código que vimos en la primera parte del truco SAS. Pero realizaremos diversas modificaciones para que nuestro código sea más práctico:

%macro excel(ubicacion,dataset);option missing="";

title;

/*ELIMINAMOS LA LIBRERIA SAS DEL NOMBRE*/

 %let aux1=%scan("&dataset.",2,".");

/*LAS VARIABLES NUMERICAS IRAN CON FORMATO EUROPEO*/

 proc contents data=&dataset.

 			  out=_temporal_ (where=(type=1) keep=name type) noprint ;

 run;

/*CREAMOS UNA INSTRUCCION PARA DAR EL FORMATO EUROPEO*/

 proc sql noprint;

 	select "format "||compress(name)||" commax12.6" into:_instruccion separated by "; "

 	from _temporal_;

 quit;

proc delete data=_temporal_; run;

/*EMPLEAMOS EL PROC PRINT JUNTO CON ODS*/

 filename _temp_ "&ubicacion.\&aux1..xls";

title ;

 ods noresults;

 ods listing close;

 ods html file=_temp_ rs=none style=minimal;

 	proc print data=&dataset. noobs;

 	&_instruccion.;

 	run;

 ods html close;

 ods results;

 ods listing;

option missing=".";

%mend excel;

Con esta macro ya disponemos de una función que nos exporta nuestras tablas SAS a Excel. Por ejemplo:

data uno;
 do i=1 to 100;
  j=ranpoi(23,3);
  k=ranpoi(123,3);
  l=ranpoi(2,3);
  m=ranpoi(3,3);
  n=l/j;
  uno="hola";
  y=ranuni(89)*100;
 output;
 end;
run;
%excel(C:\,work.uno);

Interesante macro la que os planteo, puede sernos de gran utilidad a la hora de realizar validaciones de ficheros, tabular información, análisis exploratorios,… La interactuación entre SAS y Office nos facilitará nuestro trabajo.

Si tenéis más dudas o sugerencias… rvaquerizo@analisisydecision.es