Truco SAS. Elminar retornos de carro o saltos de línea engorrosos

Cuando tenemos saltos de línea o retornos de carro que nos dificultan las lecturas de ficheros de texto podemos leer caracter a caracter con SAS y elminar esos caracteres incómodos.

data _null_;
length char 1.;
infile 'C:\fichero_de_entrada.TXT'  lrecl=1 recfm=F missover dsd;
file 'C:\fichero_de_entrada_depurado.TXT'  lrecl=1 recfm=F;
input charASCII.;
if rank(char) = 13 /*SI ES WIN PONER EL 13*/ then char= "";
put char;
run;

Recomiendo no sobreescribir el fichero de texto y crear otro «depurado». Tendréis este problema cuando vuestro programa SAS os lea menos observaciones de las esperadas. Esto suele pasar cuando trabajamos con archivos de distintos sistemas operativos, como por ejemplo cuando leemos un archivo de texto unix con una máquina windows. Saludo.

Truco SAS. Unir todas las hojas de un Excel en una

Empleamos LIBNAME con SAS para acceder a Excel. Es un truco con limitaciones y que se tiene que ir mejorando a futuro. Se trata de leer todas las hojas de un libro Excel y pegarlas horizontalmente en otra hoja QUE NO DEBE EXISTIR PREVIAMENTE. La macro es la siguiente, no se acompaña de un ejemplo de uso debido a su sencillez:

%macro une_excel(ubicacion, nombre_union);
libname selec &ubicacion.

proc sql noprint;
select "SELEC.'"||memname||"'n" into:lista_excel separated by " "
from dictionary.members
where libname = "SELEC";
quit;

data SELEC.&nombre_union.;
set &lista_excel.;
run;

libname selec clear;
%mend;

%une_excel("C:\TEMP\unir_excel2\unidos.xlsx", todas);

Creamos una librería SAS a un libro Excel determinado. Leemos con DICTIONARY las hojas que tiene dicho libro y las unimos en una hoja de ese libro al que será la última. Como buena costumbre el desasignamos la librería con LIBNAME CLEAR. Como se ha indicado antes tiene limitaciones, por ejemplo no debe existir la hoja final con la unión. Pero es un buen ejemplo de uso de LIBNAME + EXCEL y DISTIONARY. Saludos.

Dividir en palabras un texto con SAS

Una duda que planteó una lectora del blog acerca de separar una cadena de caracteres separados por comas y crear observaciones en otra variable:
Hola! he buscado por toda la página, necesito ayuda urgente. Mi problema es el siguiente.

Necesito separar una cadena de texto en una fila en varias filas, por ejemplo

cadena1,cadena2,cadena3

en

cadena1
cadena2
cadena3

para encontrar la ‘ , ‘ utilizo scan, aunque podría ocupar anypunct para que encuentre la primera ‘ , ‘ luego la segunda ‘ , ‘ etc y cortar con substr, longth … pero bueno, ya que tengo un metodo de separar el texto de la fila como hago para que cada palabra este en una nueva fila? ojala me hayan entendido y me den una idea de como hacer eso en un proc sql, con una macro o como sea, solo una pequeña orientación me serviria mucho, gracias!!!!!

Truco SAS. SYSECHO para controlar las ejecuciones en Enterprise Guide

Un truco SAS que envió una lectora del blog. Se emplea en Enterprise Guide y nos permite conocer en que punto del código está nuestra ejecución. En Enterprise Guide si no somos muy ordenados con nuestros códigos podemos tener algún problema, en la pantalla de estado de las tareas tenemos un nombre de la tarea un estado, la posición en cola el servidor desde el que se ejecuta y el tipo de servidor para los momentos en los que trabajamos con múltiples servidores. Con _sysecho _lo que hacemos es ver el estado de la tarea. Ejemplo práctico a ejecutar:

Atentos a los intervalos de confianza

Un intervalo de confianza es la zona en la que me fío de lo que estimo. Cuanto más amplia es esa zona menos me fío de lo que estimo y cuanto más estrecha más me fío de lo que estimo. Lo que pasa es que un intervalo de confianza por definición empieza con la famosa expresión “ dada una población de media nu y desviación típica sigma…

¡¡¡FU FU FU FU FU FU!!!

Ya están en marcha las V Jornadas de R

Una noticia por todos conocida. Ya están en marcha las V Jornadas de R. Esta vez son en Zaragoza el 12 y 13 de diciembre. En el siguiente enlace tenéis toda la información:

http://r-es.org/V+Jornadas

Creo que no podré ir debido a la política de vacaciones tan anticuada que tienen algunas compañías. Saludos.

Mapa Excel por distritos de Barcelona

De nuevo agradecer a Manel Pla su colaboración con la bitácora. En esta ocasión pone a nuestra disposición un mapa de Barcelona por barrios que podéis descargaros en el siguiente enlace:

Relación de distritos de Barcelona

Sigue la misma línea de todos los mapas para Excel colgados en esta web así que no es muy difícil su manejo. Pero si teneís dudas o problemas contactad. Agradecer a Manel su colaboración con este gran mapa de Barcelona en Excel. Saludos.

Trucos SAS. Ordenar las variables de un dataset

Para cambiar el orden de las variables en un conjunto de datos SAS hemos de emplear RETAIN antes de SET. Este truco es la respuesta a una duda planteada en el blog. Un vistazo rápido al ejemplo entenderemos la sintaxis:

data datos;
do i=1 to 20;
importe1 = ranuni(8)*100;
importe2 = ranuni(3)*100;
importe3 = ranuni(1)*100;
id = put(i,z5.);
output;
end;
drop i;
run;

data datos_reordenados;
retain id importe3;
set datos;
run;

Como vemos RETAIN nos permite reordenar las variables del dataset independientemente del tipo de variable que estemos manejando. También podríamos emplear algún otro tipo de sentencia, pero es recomendable usar RETAIN, como vemos no es necesario poner el total de las variables. Saludos.

SAS vs WPS. Diferencias de precio

Minequest tiene una actualización de los costes en software si se utiliza SAS o se utiliza WPS. Como vemos es sustancialmente más económico emplear WPS. Y si hablamos de instalación en cliente/servidor la diferencia se incrementa. En breve hablaré de las posibilidades estadísticas que ofrece WPS. De todos modos pasaros por su web y veréis los nuevos procedimientos que tiene la V3.

Manual para realizar mapas en Excel con archivos SVG

Nueva documentación que nos ha mandado nuestro compañero Manel Pla. Se trata de un manual para la creación de mapas en Excel con el método del que ya hablamos una vez en el blog. El resultado del trabajo de Manel ya lo conocéis. A continuación tenéis el enlace con la descarga del manual:

[ Manual de mapas en color para Excel](/images/2013/05/CREACIO MAPA VALLES EN COLORS.pdf)

Con colaboración si que se puede dotar de más contenido al blog. Muchas gracias Manel.

Video resumen del III Encuentro del Sector Seguros

Imagen de previsualización de YouTube

Interesante video que resume el III Encuentro del Sector Seguros en España. Pocos de los entrevistados usan el tiempo futuro y probablemente lo hagan por precaución. Me gusta que se hable de la solvencia, resultados técnicos, gestión de riesgos o suficiencia de prima. También se habla de low cost pero se trata como algo coyuntural. Me sorprende que no se hable de la sostenibilidad de las pensiones.

Trabajando con factores en R. Attach frente a within

Un ejemplo de trabajo con datos en R. Transformamos factores de dos formas distintas. Por un lado empleamos within con recode de la librería car y por otro lado empleamos el mítico attach.

Manejo de datos con within :

datos library(car)

datos prog id reconocimientos reconocimientos2 = recode(num_awards,"0='Sin renococimiento';1='1 reconocimiento';

else='Más de un reconocimiento'")

})

Manejo de datos con attach/detach :

attach(datos)

datosmath_cat[math<50 ] <- "D" datosmath_cat[math >= 50 & math < 60] <- "C" datosmath_cat[math >= 60&math<75] <- "B" datosmath_cat[math >= 75] <- "A"

datos$math_cat detach(datos)

No voy a entrar en que es más óptimo, tarda menos y demás. En mi opinión es mejor utilizar within pacece más «pulcro» y la verdad es que la función recode nos facilita mucho el trabajo pero como siempre tenemos múltiples posibilidades con R, por eso es R. Saludos.

Búsquedas de SQL frente a búsquedas de Hadoop

Ese gráfico está sacado de Google Trends. Representa la comparativa entre las búsquedas SQL y Hadoop en Google. La caída del SQL frente al ligero ascenso del Hadoop. ¿Llegarán a converger estás dos líneas? Seguramente no. Hadoop parará su ascenso, pero SQL no parará su descenso. A qué esperas para dejar de ser un dinosaurio.