El presente Tip incluyen varios -pero varios en serio, no es mentira- ejemplos con alternativas de exportación de una tabla a Excel.
Siempre utilizando el mismo procedimiento, aprovechamos para mostrarles algunas de las características de los motores (o engines) más conocidos para interactuar entre SAS y Excel. Y no nos olvidamos de renombrar, filtrar y más.
/****************************************************************************/
/* Exporta archivos SAS como archivos de Excel utilizando Proc Export. */
/* Ejemplos con varias alternativas. */
/****************************************************************************/
/*-------------------*/
/* inicio del código */
/*-------------------*/
/*----------------------------------------------------------------------*/
/* IMPORTANTE_1: es necesario tener en cuenta que algunas alternativas */
/* de exportación necesitan 'SAS/ACCESS to PC Files' activado. */
/* 'SAS/ACCESS to PC Files' permite importar/exportar de/a varios tipos */
/* de archivos, por ejemplo a Excel. */
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/* IMPORTANTE_2: los diferentes 'motores' (ver DBMS) se utilizan para */
/* poder resolver la comunicación entre SAS (vamos a suponer que */
/* contamos con SAS de 64 bits) y Excel (que podría ser de 32 o de */
/* 64 bits. */
/*----------------------------------------------------------------------*/
%put Versión de SAS: &sysvlong; /* muestra la versión de SAS en el Log */
/*----------------------------------------------------------------------*/
/* Ejemplo 1: el motor es 'EXCEL'. */
/* Fue pensado para las versiones de Excel 97, 2000, 2002 y 2003. */
/* Recordar que la máxima cantidad de columnas es 255. */
/* Exporta a '.xls', '.xlsb' y '.xlsx'. */
/*----------------------------------------------------------------------*/
PROC EXPORT DATA = sashelp.cars
OUTFILE = "G:\Shared\Customer Success\Autos_xls"
DBMS = EXCEL
REPLACE; /* permite reemplazar/actualizar el archivo Excel */
sheet="Autos"; /* nombre de la hoja */
RUN;
/*----------------------------------------------------------------------*/
/* Ejemplo 2: el motor es 'EXCELCS'. */
/* Es útil para interactuar entre SAS de 64 bits y Excel de 32 bits. */
/* Exporta a otros tipos de archivo Excel, además del famoso '.xls' */
/* También permite trabajar en SAS bajo Unix. */
/*----------------------------------------------------------------------*/
PROC EXPORT DATA = sashelp.cars
OUTFILE = "G:\Shared\Customer Success\Autos_Customer_Success"
DBMS = EXCELCS
REPLACE; /* permite reemplazar/actualizar el archivo Excel */
RUN;
/*------------------------------------------------------------------*/
/* Ejemplo 3: el motor es 'XLSX'. */
/* Disponible a partir de SAS 9.3M1 */
/* Fue pensado para las versiones de Excel a partir de Excel 2007. */
/* Es práctico aunque no tiene algunas de las posibilidades de */
/* los anteriores. */
/*------------------------------------------------------------------*/
PROC EXPORT DATA = sashelp.cars
OUTFILE = "G:\Shared\Customer Success\Autos_Customer_Success"
DBMS = XLSX
REPLACE; /* permite reemplazar/actualizar el archivo Excel */
sheet="Autos";
RUN;
/*------------------------------------------------------------------*/
/* Ejemplo 4: exporta un conjunto de datos SAS a varias hojas de un */
/* mismo archivo Excel. */
/* Agrega un filtro, selecciona columnas y las renombra. */
/*------------------------------------------------------------------*/
/* Etapa 1: Crea una hoja con la tabla completa */
proc export data=sashelp.cars
(keep=Make Model Type Origin /* guarda estas 4 variables solamente */
rename=(Make=Marca Model=Modelo Type=Tipo Origin=Origen)) /* renombra las 4 variables */
outfile="G:\Shared\Customer Success\Autos_en hojas"
dbms=xlsx
replace;
sheet="Todos los orígenes";
run;
/* Etapa 2: Crea tres hojas nuevas con las tablas filtradas por origen */
/* Hoja 'Europa' */
proc export data=sashelp.cars
(where=(Origen="Europe") /* Filtro sobre la variable 'Origin' */
/* ¡Atención! Hay que escribir 'Origen' y no 'Origin'
porque esta variable está renombrada (ver más abajo en 'rename=')*/
keep=Make Model Type Origin /* incluir 'Origin' solamente para controlar el resultado */
rename=(Make=Marca Model=Modelo Type=Tipo Origin=Origen))
outfile="G:\Shared\Customer Success\Autos_en hojas"
dbms=xlsx
replace;
sheet="Origen Europa";
run;
/* Hoja 'Asia' */
proc export data=sashelp.cars
(where=(Origen="Asia") /* Filtro sobre la variable 'Origin' */
/* ¡Atención! Hay que escribir 'Origen' y no 'Origin'
porque esta variable está renombrada (ver más abajo en 'rename=')*/
keep=Make Model Type Origin /* incluir 'Origin' solamente para controlar el resultado */
rename=(Make=Marca Model=Modelo Type=Tipo Origin=Origen))
outfile="G:\Shared\Customer Success\Autos_en hojas"
dbms=xlsx
replace;
sheet="Origen Asia";
run;
/* Hoja 'USA' */
proc export data=sashelp.cars
(where=(Origen="USA") /* Filtro sobre la variable 'Origin' */
/* ¡Atención! Hay que escribir 'Origen' y no 'Origin'
porque esta variable está renombrada (ver más abajo en 'rename=')*/
keep=Make Model Type Origin /* agregar 'Origin' solamente para controlar el resultado */
rename=(Make=Marca Model=Modelo Type=Tipo Origin=Origen))
outfile="G:\Shared\Customer Success\Autos_en hojas"
dbms=xlsx
replace;
sheet="Origen USA";
run;
/*------------------------------------------------------------------*/
/* Ejemplo 5: exporta un conjunto de datos SAS, uno con etiquetas y */
/* otro sin etiquetas, a dos hojas de un archivo Excel. */
/*------------------------------------------------------------------*/
/* Sin etiquetas */
proc export data=sashelp.cars
(keep=EngineSize Length MPG_City MPG_Highway)
outfile="G:\Shared\Customer Success\Autos_etiquetas"
dbms=xlsx
replace;
sheet="Nombres de variables";
run;
/* Con etiquetas */
proc export data=sashelp.cars
(keep=EngineSize Length MPG_City MPG_Highway)
outfile="G:\Shared\Customer Success\Autos_etiquetas"
dbms=xlsx
replace
label; /* etiquetas de variables */
sheet="Etiquetas de variables";
run;
/*----------------*/
/* fin del código */
/*----------------*/
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.