/************************************/
/************************************/
/* */
/* SAS - Customer Success Latam */
/* */
/************************************/
/************************************/
/************************************/
/************************************/
/* */
/* Webinar: SAS y Excel */
/* 23Jun2022 */
/* */
/************************************/
/************************************/
/************************************/
/* Expositor: Daniel Vazquez Vargas */
/************************************/
/************************/
/* Uso de "ODS html" */
/************************/
/****************************************************************/
/* Escribir tablas en una misma hoja Excel, en una grilla */
/****************************************************************/
/****************************************************************/
/* Vamos a escribir una parte de 4 tablas en una misma hoja */
/* Excel. La idea es colocarlas en los vértices de un */
/* cuadrado de 3 x 3, lo que nos permite dejar una fila y */
/* una columna de separación. */
/****************************************************************/
/*-------------------*/
/* inicio del código */
/*-------------------*/
/* Necesitamos algunos parámetros de entrada, que son: */
/* ----> 4 tablas (o datasets) */
/* ----> cantidad de filas (u observaciones) */
/* ----> cantidad de columnas (o variables) */
/* Elegimos las 4 tablas */
%let dataset1=sashelp.class;
%let dataset2=sashelp.cars;
%let dataset3=mapssas.world;
%let dataset4=sashelp.air;
/* Elegimos la cantidad de filas y columnas */
%let filas=10;
%let columnas=5;
/* Elegimos el archivo Excel */
ods html file="g:\temp\grilla.xls";
/*Armo la grilla*/
ods layout gridded rows=3 columns=3; /*¡sí! ¡ODS layout! SAS está lleno de secretos...*/
/* Ahora sí, comenzamos a escribir las tablas */
/* Tabla Nro. 1 */
ods region row=1 column=1; /*Voy a la primera esquina*/
proc contents data=&dataset1 out=lista_vars noprint varnum;
run;
proc sort data=lista_vars out=lista_vars1;
by varnum;
run;
proc sql noprint outobs=&columnas;
select name
into :variables separated by ' '
from lista_vars1;
quit;
%put &=variables; /*es para controlar las variables en el Log*/
title1 justify=center font='Arial' height=14pt color=white bold bcolor=grey "&dataset1";
proc print data=&dataset1 (obs=&filas);
var &variables;
run;
title;
/* Tabla Nro. 2 */
ods region row=1 column=3; /*Voy a la segunda esquina*/
proc contents data=&dataset2 out=lista_vars noprint varnum;
run;
proc sort data=lista_vars out=lista_vars1;
by varnum;
run;
proc sql noprint outobs=&columnas;
select name
into :variables separated by ' '
from lista_vars1;
quit;
%put &=variables; /*es para controlar las variables en el Log*/
title1 justify=center font='Arial' height=14pt color=white bold bcolor=grey "&dataset2";
proc print data=&dataset2 (obs=&filas);
var &variables;
run;
title;
/* Tabla Nro. 3 */
ods region row=3 column=1; /*Voy a la tercera esquina*/
proc contents data=&dataset3 out=lista_vars noprint varnum;
run;
proc sort data=lista_vars out=lista_vars1;
by varnum;
run;
proc sql noprint outobs=&columnas;
select name
into :variables separated by ' '
from lista_vars1;
quit;
%put &=variables; /*es para controlar las variables en el Log*/
title1 justify=center font='Arial' height=14pt color=white bold bcolor=grey "&dataset3";
proc print data=&dataset3 (obs=&filas);
var &variables;
run;
title;
/* Tabla Nro. 4 */
ods region row=3 column=3; /*Voy a la cuarta esquina*/
proc contents data=&dataset4 out=lista_vars noprint varnum;
run;
proc sort data=lista_vars out=lista_vars1;
by varnum;
run;
proc sql noprint outobs=&columnas;
select name
into :variables separated by ' '
from lista_vars1;
quit;
%put &=variables; /*es para controlar las variables en el Log*/
title1 justify=center font='Arial' height=14pt color=white bold bcolor=grey "&dataset4";
proc print data=&dataset4 (obs=&filas);
var &variables;
run;
title;
ods layout end;
ods html close;
ods listing;
/*--------------------*/
/* fin del código */
/*--------------------*/