Nuestras funciones de R en menús con rpanel y svWidgets

Hoy quería acercarme a los paquetes rpanel y svWidgets para crear ventanas y menús respectivamente. La idea es sencilla, tenemos funciones en R que empleamos habitualmente y con ellas vamos arealizar un menú. Partimos de una función muy sencilla en R para eliminar datos con valores missing. [Por cierto, que cansado estoy de escribir palabras en inglés para facilitar las búsquedas, un valor missing es un valor perdido. Tras el lapso continúo]. Mi función: ...

10 de febrero de 2011 · rvaquerizo

Trucos SAS. Borrando blancos innecesarios con COMPBL

Me ha llegado hoy una duda interesante. El problema era eliminar espacios en blanco innecesarios mediante alguna función de SAS. Más concretamente teníamos algo parecido a: ```sas data prueba; nombre="DE PEDRO MARTINEZ ESTEBAN JOSE"; /*QUEREMOS LLEGAR A: DE PEDRO MARTINEZ ESTEBAN JOSE*/ run; Pues bien, esto se puede hacer con la función COMPBL que “ remove blank spaces with SAS ”: ```sas data prueba; nombre="DE PEDRO MARTINEZ ESTEBAN JOSE"; nombre2=compbl(nombre); put nombre2; run; Una función fácil y práctica que seguro conocéis pero que no está mal recordar. Saludos.

1 de febrero de 2011 · rvaquerizo

Truco R. Paletas de colores en R

En cuántas ocasiones habéis querido dar color a un gráfico y por aligerar código creáis gráficos de este tipo: ```r x = rpois(100,as.integer(runif(10)*1000)) barplot(sort(x)) Pues en R esta labor puede costarnos muy poco si empleamos las paletas de colores. Hoy quiero presentaros las siguientes: rainbow heat.colors terrain.colors topo.colors Ejemplos de uso: ```r require(graphics) barplot(sort(x),col = rainbow(x),main="Paleta rainbow") barplot(sort(x),col = heat.colors(length(x)),main="Paleta heat") barplot(sort(x),col = topo.colors(length(x)),main="Paleta topo") Comparad, metemos los 4 gráficos en una sóla ventana y tendremos la figura con la que iniciamos esta entrada: ...

30 de enero de 2011 · rvaquerizo

Truco R. Eval, parse y paste para automatizar código

La función paste nos permite concatenar cadenas de texto con R: paste("Dato",rep(1:10),sep="") Parse recoge una expresión pero no la evalúa: parse(text="sqrt(121)") Y por último eval evalúa una expresión: eval(parse(text="sqrt(121)")) Interesantes funciones que nos pueden permitir automatizar códigos recursivos o códigos guardados como objetos en R. Imaginemos el siguiente ejemplo de R: ejemplo1 <- data.frame(replicate (20,rpois(20,10))) nom <- paste("dato",1:20,sep="") names(ejemplo1) <- nom summary(ejemplo1) Hemos automatizado los 20 nombres de un data frame con datos aleatorios con una distribución de poisson de media 10 creado con la función replicate. Ahora imaginemos que deseamos transformar en factor sólo aquellos elementos del data frame con un sufijo par (datos2, datos4, …). Podemos crear una función o podemos crear ejecuciones de código R del siguiente modo: ...

7 de enero de 2011 · rvaquerizo

Recodificar el valor de un factor en R

Tras leer una duda planteada en la lista de R-Help en español me he animado a crear una entrada acerca de la recodificación de factores en R. Así dejo recogido algún código/truco que puede serviros en vuestro trabajo con R y que este pequeño problema no afecte a vuestra productividad. Además os acerco a la función recode del paquete car. Pero en primer lugar os planteo como recodificar factores empleando IF/ELSE: ...

7 de diciembre de 2010 · rvaquerizo

Trucos Excel. Mapa de España por provincias

Pongo a vuestra disposición un archivo Excel que nos permite la realización del siguiente gráfico: En este link podéis descargaros el archivo. He elegido formato Excel 2003 para el archivo, de este modo lo podréis utilizar muchos de vosotros. Si alguien desea el formato 2007 que lo diga. De momento es una primera versión a la que iré añadiendo un mayor número de funcionalidades. Se trata de un gráfico en el que podemos variar el color de cada una de las provincias mediante la siguiente macro: ...

15 de noviembre de 2010 · rvaquerizo

Objetos hash para ordenar tablas SAS

A partir de la versión 9.1 de SAS se incluyeron los objetos HASH. Hace tiempo ya demostramos su eficiencia en el cruce de tablas y hoy quería mostraros como se programa una ordenación empleando HASH. La verdad es que estoy saboreando mis últimos días con SAS v9.2, en breve volveré a una versión muy anterior. El codigo, en mi opinión, es muy sencillo y como es habitual tenemos ejemplo ilustrativo que comentaré a continuación: ...

12 de noviembre de 2010 · rvaquerizo

Abreviar código en Enterprise Guide

En Enterprise Guide de SAS podemos ahorrarnos código empleando las abreviaturas del editor. Yo no lo recomiento porque nuestros códigos sólo podrán ser ejecutados con nuestros equipos pero Guide es una herramienta pensada para los usuarios y no para el desarrollo de código. Sobre un programa de Guide pulsamos sobre programas-> Añadir Abreviaturas y aparece la siguiente ventana:En la ilustración que os pongo hemos creado la abreviatura ps que equivale a proc sql. Con ello cada vez que en el editor de programas de Guide pongamos ps veremos lo siguiente:El editor entiene que estamos escribiendo proc sql y pulsando el TAB podemos ahorrarnos escribir mucho mucho código.

11 de noviembre de 2010 · rvaquerizo

Trucos SAS. Ejecutar un código si existe una tabla o un fichero

Esta duda me llegó hace unos días. Se trataba de ejecutar un código si existía determinado fichero o determinada tabla. Para hacer esto os planteo una posible metodología que yo utilizaba cuando programaba SAS en una gran entidad bancaria con Enterprise Guide 1, por aquellos entonces hacía maravillas con la castaña del Guide v1. Entre ellas unas macros que contenían una sentencia condicional que ejecutaba un código en función de la función (bonita expresión) EXIST o FILEEXIST. Lo que yo hacía era algo parecido a esto: ...

10 de noviembre de 2010 · rvaquerizo

Macros (fáciles) de SAS. Normaliza un texto rápido

¿Tienes que normalizar un texto con SAS? Llevas 2 horas buscando funciones de texto con la ayuda y te has crispado. En una macro y de forma muy rápida os planteo un muestrario de funciones con las que podéis normalizar (un poco) un texto. Esto es algo que tuve que hacer la otra mañana no es muy sofisticado pero que puede seros de utilidad: %macro prepara(varib); &varib.=translate(&varib.,"AEIOU","ÁÉÍÓÚ"); &varib.=tranwrd(&varib.,"NUM","NUMERO"); &varib.=tranwrd(&varib.,"CONT","CONTABLE"); &varib.=tranwrd(&varib.,"IMP ","IMPORTE "); &varib.=tranwrd(&varib.," POR "," "); &varib.=tranwrd(&varib.," DE "," "); &varib.=tranwrd(&varib.," EN "," "); &varib.=tranwrd(&varib.," LOS "," "); &varib.=tranwrd(&varib.," AL "," "); &varib.=tranwrd(&varib.," EL "," "); &varib.=tranwrd(&varib.," ULTIMOS 12 "," 12 "); &varib.=tranwrd(&varib.," ULTIMOS 3 "," 3 "); &varib.=tranwrd(&varib.," ULTIMO MES "," MES "); &varib.=tranwrd(&varib.," TRANSACCIOENES "," TRANSACCIONES "); call prxchange(prxparse('s/([A-ZÑa-zñ 0-9]*)([^A-Za-zÑñ 0-9]*)/$1/'),-1,&varib.); %mend; En realidad es una sucesión de TRANWRD pero destacaría el uso de la función TRANSLATE para eliminar tildes en nuestras vocales y el uso de CALL PRXCHANGE del que ya tuvimos un aperitivo hace tiempo. Sólo tenéis que copiar y pegar y si tenéis dudas mejor seguid el hilo porque últimamente me están llegando demasiadas por correo y no dispongo de tiempo, algo que ya habréis detectado muchos de los seguidores del blog. De todos modos tengo trucos de estos para seguir dotando de contenido al blog en los próximos meses. Por cierto, si alguien lo mejora que siga el hilo…

8 de noviembre de 2010 · rvaquerizo