Consejos y trucos

BookmarkSubscribeRSS Feed
Tip Semanal 031: Exporta a texto con el Paso Data y Put
Berenice25
SAS Employee

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 */
/*----------------*/

 

 

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags
Contributors