Si queremos exportar una tabla SAS como texto contamos con el Proc
Export para poder hacerlo. Pero tal vez necesitamos tener un mayor control del resultado que estamos generando.
¿Queremos muchas más opciones? Usemos el Paso Data con la sentencia Put.
Pero no con Put usual, ¡usaremos la sentencia Put ( ) ( )!
¿Con paréntesis dos veces? ¡Sí!
/*-------------------*/
/* inicio del código */
/*-------------------*/
/*--------------------------------------------------------------*/
/* Utilizamos el Paso Data combinado con la sentencia Put para */
/* exportar a un archivo de texto. Y por supuesto, usamos */
/* paréntesis dos veces. */
/*--------------------------------------------------------------*/
/*--------------------------------------------------*/
/* Ejemplo 1: */
/* Exporta todas las variables separadas por */
/* espacios. */
/* Si no lo saben, les comentamos que SAS exporta */
/* con espacios en forma predeterminada. */
/*--------------------------------------------------*/
data _null_;
set sashelp.shoes;
file 'g:\workshop\shoes1_data_step_completa.txt';
put (_all_) (:); /* '_all_' para incluir todas las variables */
run;
/*--------------------------------------------------*/
/* Ejemplo 2: */
/* Exporta solamente las variables numéricas. */
/*--------------------------------------------------*/
data _null_;
set sashelp.shoes;
file 'g:\workshop\shoes2_data_step_numericas.txt';
put (_numeric_) (:); /* incluye solamente las variables numéricas */
run;
/*----------------------------------------------------------*/
/* Ejemplo 3: */
/* Exporta las variables numéricas */
/* seleccionadas y ordenadas. */
/*----------------------------------------------------------*/
data _null_;
set sashelp.shoes;
file 'g:\workshop\shoes3_data_step_2_variables_seleccion.txt';
put (Inventory Sales) (:); /* incluye las variables seleccionadas en
el orden que se especifica */
run;
/*--------------------------------------*/
/* Ejemplo 4: */
/* Exporta las variables */
/* separadas por puntos y comas. */
/*--------------------------------------*/
data _null_;
set sashelp.shoes;
file 'g:\workshop\shoes4_data_step_punto_coma.txt' dlm=';'; /* delimitado por punto
y coma */
put (_all_) (:);
run;
/*--------------------------------------------------*/
/* Ejemplo 5: */
/* Exporta las filas seleccionadas. Agrega */
/* los nombres de las variables y el signo igual. */
/*--------------------------------------------------*/
data _null_;
set sashelp.shoes (firstobs=5 obs=10); /* lee de la observación 5 a la 10, ambas
incluidas (es decir 6 observaciones) */
file 'g:\workshop\shoes5_data_step_igual_selecciona_filas.txt';
put (_all_) (=); /* agrega un signo '=' después del nombre de cada variable, en
todas las observaciones */
run;
/*--------------------------------------------------*/
/* Ejemplo 6: */
/* Exporta las variables separadas por tabulación. */
/*--------------------------------------------------*/
data _null_;
set sashelp.shoes;
file 'g:\workshop\shoes6_data_step_tab.txt' dlm='09'x; /* es el delimitador correspondiente
a TAB (o Tabulador) */
put (_all_) (:);
run;
/*--------------------------------------------------*/
/* Ejemplo 7: */
/* Exporta las primeras 10 filas con cada valor en */
/* una nueva línea. */
/*--------------------------------------------------*/
data _null_;
set sashelp.shoes (obs=10);
file 'g:\workshop\shoes7_data_step_linea_sep.txt';
put (_all_) (=/); /* agrega el signo igual y salta a una nueva línea */
run;
Existen muchas más posibilidades para controlar la salida a un archivo de texto usando el Paso Data.
Por ejemplo, se pueden incluir formatos específicos para cada variable. O utilizar filtros complejos para seleccionar filas.
Pero es posible que se hayan quedado con -al menos- un par de dudas.
Vamos a resolver una de ellas: ¿qué sucede si no utilizamos la sentencia Put con paréntesis?
/*--------------------------------------------------*/
/* Ejemplo 8: */
/* Reemplazamos Put (_all_) por Put _all_. Así es, */
/* sin los paréntesis. */
/*--------------------------------------------------*/
data _null_;
set sashelp.shoes;
file 'g:\workshop\shoes8_data_step_default.txt';
if _N_=1 then /* para que se vea más bonito, agregamos el número del
ejemplo al principio del archivo de salida */
do;
put 'Ejemplo Nro. 8';
end;
put _all_;
run;
El resultado es similar a uno de los ejemplos anteriores. Salvo por lo que aparece al final de cada fila: las variables internas _ERROR_ y _N_.
Tal vez están pensando en qué otras opciones existen? ¿Otros delimitadores? ¿Cómo utilizar formatos?
O tal vez... tal vez... están pensando en cómo agregar los nombres de las columnas en la primera fila del archivo de texto?
¡Esperamos que nos envíen comentarios con sus dudas! ¡O con más alternativas!
/*----------------*/
/* 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.