Trucos

Truco SAS. Un vistazo a ficheros planos muy grandes

Alguna vez no habéis podido abrir un fichero de texto muy grande para comprobar si tiene cabeceras o conocer el separador de campos. Es habitual emplear para esto el gran UltraEdit. Pero podemos emplear el PROC FSLIST de SAS para poder hacer esta tarea y se nos abrirá de inmediato una vista del fichero en una ventana de nuestra sesión SAS. La sintaxis muy sencilla:

proc fslist fileref="Z:\temp\archivo_enorme.txt";

quit;

Este sencillo código nos abrirá las primeras líneas del archivo en un instante y así podremos comprobar si tiene cabeceras o el separador que utiliza. Esto nos facilitaría la importación del fichero a tabla SAS. Saludos.

Trucos Excel. Gráficos dot plot, representando un ranking gráficamente

Los gráficos de puntos son muy prácticos para representar de una forma visual rankings (por ejemplo). En Excel su realización no es inmediata como con otras herramientas (R por ejemplo). Para ilustrar el ejemplo se van a presentar los 20 primeros puestos de la lista TIOBE de mayo de 2012 (la entrada estaba en la nevera). Entramos en la lista y sin más copiamos y pegamos los datos de tabla HTML a tabla Excel:

Truco SAS. Macro número de días de un año

Macro de SAS que te dice el número de días que tiene un año.

%macro dias_anio(anio);

"31DEC&anio."d-"01JAN&anio."d+1

%mend;

A lo mejor ya la he puesto, no me lo tengáis en cuenta.

Trucos SAS. Primer y último elemento de un array

Breve entrada sobre el uso de arrays en SAS. Dada una tabla SAS como esta con una variable mes1, mes2, … mesN:

arrays_sas.PNG

Necesitamos identificar el primer y el último elemento no nulo de un array y el número de elementos no nulos de ese array. Veamos el ejemplo:

data datos;

input id mes1 mes2 mes3 mes4 mes5 mes6;

datalines;

1 . . . . . .

2 162.18 88.41 919.62 891.25 837.73 163.14

3 . 790.52 160.03 . 60.31 343.30

4 . . 482.45 755.39 . .

5 265.17 963.53 . . 392.06 .

6 . 214.95 616.17 183.01 778.48 57.42

7 191.52 . 208.50 50.55 705.72 .

8 711.76 . . . 193.20 658.45

9 782.67 172.49 539.42 663.28 4.53 358.51

10 695.12 367.74 . 573.47 366.30 951.98

;

run;

Para este proceso creamos un array que recorreremos 2 veces, una hacia delante para identificar el primer elemento y otra a hacia atrás para identificar el último elemento:

Trucos SAS. Errores y formatos

Un truco SAS que puede ayudar a todos aquellos que estén empezando a programar en SAS. Hay ocasiones que trabajamos con datasets que tienen formatos y nos encontramos con el error: « formato FMT no se ha encontrado o no se ha podido cargar». ¿Qué hacer? Lo primero es jugar con la opción FMTERR:

options nofmterr;

Esta opción de SAS nos permite trabajar con conjuntos de datos SAS con formatos aunque no estén cargados porque no se tienen en cuenta los errores. Por otro lado podemos emplear PROC DATASETS para eliminar todos los formatos (entrada y/o salida) de un conjunto de datos SAS, el código es el siguiente:

Trucos SAS. Pasar fecha a caracter en SAS

Pasar números a carácter en SAS es un tema reiterativo tanto en entradas al blog como en búsquedas. Pero que se le puede dar otra vuelta de tuerca. Se trata de transformar fechas a variables alfanuméricas, pero en este caso vamos a poner las fechas en formato español. Ejecutad este ejemplo en SAS:

data uno;

y = '30jan11'd;

c0 = put(y,ddmmyy10.);

c1 = upcase(put(y,ESPDFDD.));

c2 = upcase(put(y,ESPDFDE.));

c3 = upcase(put(y,ESPDFDN.));

c4 = upcase(put(y,ESPDFDT.));

c5 = upcase(put(y,ESPDFDWN.));

c6 = upcase(put(y,ESPDFMN.));

c7 = upcase(put(y,ESPDFMY.));

c8 = upcase(put(y,ESPDFWDX.));

c9 = upcase(put(y,ESPDFWKX.));

run;

Imagino que todos tenéis el NLS de SAS instalado y no tenéis problemas con estos formatos. Resumamos que nos ofrece cada una de estas transformaciones:

Trucos Excel. Mapa de México por Estados

mapa_excel_mexico1.png

Hoy os presento la versión inicial delmapa de México por Estados Federales para que le podáis usar en Excel, Powerpoint, Word o alguna de las herramientas habituales de ofimática. Se trata de un archivo Excel con macros que os podéis descargar en este enlace. La hoja Mapa contiene una serie de shapes que están nombrados para poder cambiar de color en función de una variable tramo. Este Excel inicial está preparado para poder pintar hasta 5 tramos, si deseáis más tramos tenéis que meteros en el código Excel que modifica el color de cada uno de los 32 shapes que componen el mapa, posteriormente lo repasamos de forma rápida. Por otro lado tenemos la división de los estados, el nombre de los shapes y los tramos que previamente habremos preparado. Este ejemplo no pinta nada concreto. La hoja Mapa además dispone de dos botones asociados a las dos macros que contiene el Excel. Por un lado tenemos una macro que nos deja los Estados en blanco y por otro tenemos la macro que nos pinta de cada color elegido el mapa.Un vistazo sobre estos elementos de la hoja Excel:

Mapa de España por provincias en HTML

gmap.gif

Nueva entrada en el blog dedicada a mapas, esta vez con HTML. Se trata de un mapa de España por provincias lo más sencillo posible. Es una imagen gif en blanco con el mapa de España, la imagen tiene un link para cada provincia. El link corresponde al identificador numérico de la provincia, los dos primeros dígitos del código postal. El resultado lo podéis ver y guardar en este enlace . No incluye las Ciudades Autónomas. No es un mapa muy vistoso, es lo más sencillo posible, sois vosotros los que tenéis que darle el formato que más se adecúe a vuestras necesidades. Una idea: trabajad sobre el gif para mejorarlo, el trabajo más complicado es asignar el link con el AREA SHAPE y eso ya está hecho. También podéis aprovechar las coordenadas de ese mismo AREA SHAPE y algún script para hacer mapas mucho más vistosos. En fin, no puedo daros todo hecho, si alguien está especialmente interesado que contacte. También podéis mandarme modificaciones y las iré subiendo a la web, como hacemos con los mapas de España en Excel.

Truco Excel. Application GetOpenFilename el explorador de archivos sencillo en macro

Application.GetOpenFilename y como parámetros el texto y el tipo de archivo. Un truco excel para meter en una macro el explorador de archivos más sencillo. Por ejemplo para obtener los archivos de Word de un directorio podremos hacer:

Sub obtiene_documento()

Dim documento As String

documento = Application.GetOpenFilename("Archivos Word (*.doc*), *.doc*")

Cells(1, 1) = documento

End Sub

Si ejecutamos esta macro se abrirá un explorador de windows y podremos seleccionar archivos del tipo .doc. Nuestra selección la escribimos en la celda (1,1). Para múltiples selecciones… Otro día haremos un «importador masivo» de datos en excel. El más sencillo explorador de windows en una macro de Excel. Saludos.

Trucos SAS. Eliminación de espacios en blanco

Truco SAS práctico para aquellos que os estáis iniciando en el uso de las funciones de texto con SAS. Se trata de eliminar aquellos espacios en blanco que no son necesarios en una variable. Quería plantearos las posibles soluciones que se me han ido ocurriendo. Algunas de ellas no son eficientes pero es necesario que dispongáis de todas. En la línea habitual planteo un ejemplo para que lo ejecutéis y así podáis analizar los resultados:

Truco Excel y SAS. Ejecutar SAS desde macro en Excel

Un truco muy malo hoy. Se trata de crear una macro de Excel que llame a un programa SAS y que además podamos pasar un parámetro. Es un código en Visual Basic que no tiene complejidad pero que puede ser útil. El código es:

Sub ejecuta_SAS()

'

'Ponemos la ubicación del ejecutable de SAS

ubicacion_SAS = "C:\SAS\sas.exe"

'

'Programa que deseamos ejecutar de SAS

programa_SAS = "'C:\ejecucion_excel.sas'"

'

'Podemos pasar parámetros como macros por ejemplo que aparecen en una celda de Excel

'Podemos poner todo el código SAS que queramos

parametro = "'%let nobs = " & Cells(1, 1) & " ;'"

'

'En una cadena ponemos toda la ejecución

ejecucion = ubicacion_SAS & " " & programa_SAS & " -initstmt " & parametro

'

'Shell ejecuta la cadena anterior

ejecuta = Shell(ejecucion, 1)

'

End Sub

Poca cosa y poco talento y bastante claro. Pero si me gustaría destacar el uso de la opción de SAS -initstmt que nos permite ejecutar SAS poniendo un código previamente (init statement). Esta opción nos permite pasar una macro como parámetro que es leída en una celda de Excel. Es una opción habitual cuando hacemos archivos ejecutables para SAS. Espero que sea de utilidad. Saludos.

Trucos Excel (y SAS). Complemento para cambiar la configuración regional

Pasar salidas de SAS a Excel trae de cabeza a muchos usuarios de SAS. A este blog llegan un gran número de entradas desde Google con términos del tipo importar datos de sas a Excel, conectar SAS a excel, cambiar la configuración regional con macros,… Hoy quería ayudaros un poco con esta problemática. Bueno, en realidad os va a ayudar el compañero Salva que hace unos meses me pasó un complemento de Excel tremendamente útil para aquellos que movemos datos entre SAS y Excel. Para trabajar con este complemento sólo tenéis que descargarlo en este enlace y activar el complemento en Opciones de Excel Administrar complementos. Una vez hayamos hecho esto tendremos en nuestra pestaña complementos lo siguiente: