El ODS de SAS (III). Documentos HTML y PDF desde SAS

19 Jun

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; 
quit; 
title; 
ods html close;

Generamos un dataset aleatorio y posteriormente deseamos hacer un análisis univariante de la variable num_cargos por el 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:

ods noresults; 
ods output Chisq=testchi; 
proc freq data=uno; 
tables num_productos*num_cargos/chisq; 
quit; 
ods results; 

ods html 
	path='C:\temp\web' 
	body='test_chi2.htm'; 
title "Test chi cuadrado:"; 
proc print data=testchi noobs; 
run; 
title; 
ods 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. Importante reseñar que el resultado de nuestros informes será «el BODY». Podemos emplear múltiples procedimientos para mejorar nuestros informes:

ods 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' 
;quit; 

proc format ; 
value prod 
low-6='1 Hasta 5 productos' 
6-high='2 Más de 5 cargos' 
;quit; 

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; 
ods html close;

La información que vamos reportando se puede hacer más sofisticada y con el proc report damos formato a nuestras tablas y 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:


ods 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; 
quit; 

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; 
ods 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 planteraré más ejemplos de su uso. Como siempre, para cualquier duda o sugerencia: rvaquerizo@analisisydecision.es

3 respuestas a «El ODS de SAS (III). Documentos HTML y PDF desde SAS»

  1. Hola buen dia, que buen articulo, pero tengo una duda, cuando genero el PDF con el ODS dentro de los marcadores me aparece un nuevo marcador que dice «informe de sumarizacion o detalle» el cual no da valor agregado, como podria suprimirlo para que solo aparezcan los principales??

  2. Es bastante complejo eliminar elementos de los marcadores. Creo que habrías de definirte un estilo con el proc template. De todas formas prueba con ods proclabel a ver si puedes definir los bookmarks.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *