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