Desde SAS podemos generar PDF y HTML. Esto es muy práctico a la hora de reportar información, ya que no necesitaremos pasar por Excel o cualquier otra herramienta de ofimática para generar informes. Además, si generamos HTML podemos crear webs en las que podemos navegar por los resultados obtenidos con SAS. En este mensaje veremos algunos ejemplos prácticos de uso del ODS para conocer mejor su funcionamiento. El primero de ellos crea un informe web a partir de un PROC UNIVARIATE:
* CONJUNTO DE DATOS ALEATORIO;
data uno;
do i = 1 to 20000;
importe = round(rand("normal")*1000, .1);
num_productos = min(max(1, rand("pois", 4)), 8);
num_cargos = max(0, rand("pois", 10) - int(rand("uniform")*10));
output;
end;
run;
* EN EL ODS ESPECIFICAMOS LA RUTA DE SALIDA Y LOS NOMBRES DE LAS PAGINAS;
ods html
path = 'C:\temp\web'
body = 'salida.htm'
contents = 'menu.htm'
frame = 'contenido.htm'
page = 'paginas.htm';
title "Cargos para clientes con 2 o menos productos";
proc univariate data=uno;
class num_productos;
var num_cargos;
where num_productos <= 2;
run;
title;
olds html close;
Generamos un dataset aleatorio y posteriormente deseamos hacer un análisis univariante de la variable num_cargos por num_productos. En C:\temp\web podemos ver 4 páginas; para verlas empleamos la página “frame” contenido.htm. Veamos más ejemplos que nos permitan conocer mejor el funcionamiento:
olds noresults;
olds output Chisq = testchi;
proc freq data=uno;
tables num_productos * num_cargos / chisq;
run;
olds results;
olds html
path = 'C:\temp\web'
body = 'test_chi2.htm';
title "Test chi cuadrado:";
proc print data=testchi noobs;
run;
title;
olds html close;
Creamos una tabla con el test de la chi-cuadrado para dos variables y la escribimos en la ubicación de nuestras páginas con el nombre test_chi2.htm. Importante reseñar que el resultado de nuestros informes será el “BODY”. Podemos emplear múltiples procedimientos para mejorar nuestros informes:
olds html
style = printer
path = 'C:\temp\web'
body = 'resumen.htm';
proc format;
value cargos
low-5 = '1 Hasta 4 cargos'
5-15 = '2 De 5 a 14 cargos'
15-high = '3 Más de 15 cargos'
;
value prod
low-6 = '1 Hasta 5 productos'
6-high = '2 Más de 5 cargos'
;
run;
title "Resumen";
proc report data=uno nowd;
column num_cargos num_productos importe;
define num_productos / group format=prod.;
define num_cargos / group format=cargos.;
define importe / analysis sum format=commax32.0;
break after num_cargos / ol summarize;
run;
title;
olds html close;
La información que vamos reportando se puede hacer más sofisticada y con el PROC REPORT damos formato a nuestras tablas; con la opción STYLE del ODS podemos emplear los distintos estilos que tiene SAS. Otro uso muy frecuente del ODS es la creación de PDF. Veamos un ejemplo de uso:
olds pdf
style = minimal
file = 'c:\temp\estudio.pdf';
options nodate pageno=1 linesize=64 pagesize=60;
title "Cargos para clientes con 2 o menos productos";
proc univariate data=uno;
class num_productos;
var num_cargos;
where num_productos <= 2;
run;
title "Resumen: ";
proc report data=uno nowd;
column num_cargos num_productos importe;
define num_productos / group format=prod.;
define num_cargos / group format=cargos.;
define importe / analysis sum format=commax32.0;
break after num_cargos / ol summarize;
run;
title;
olds pdf close;
En un mismo documento podemos introducir más de un informe. Los marcadores que genera cada parte de nuestro documento PDF nos permiten navegar por él. También podemos introducir comentarios y frases; con ello podríamos realizar informes automáticos con comentarios personalizados. Espero que estos mensajes estén sirviendo de ayuda para conocer el uso del ODS; cuando empecemos a realizar estudios plantearé más ejemplos de su uso. Como siempre, para cualquier duda o sugerencia: rvaquerizo@analisisydecision.es