Con anterioridad hemos visto el manejo del ODS y cómo 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);
options 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;
options 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 interacción entre SAS y Office nos facilitará nuestro trabajo.
Si tenéis más dudas o sugerencias… rvaquerizo@analisisydecision.es