Trucos R. La función mod para R

Buscando algunas cosas sobre R, he encontrado esta función que hice hace mucho tiempo. De hecho, puedo decir que es de las primeras que hice, allá por 2001 (creo), cuando empecé a conocer esto de R. Por aquel entonces aseguré que el futuro pasaba por R y, nueve años después, sigo diciendo lo mismo; el tiempo me dará la razón; lo que no me imaginaba es que hiciera falta tanto tiempo. En fin, historias del dinosaurio. ...

27 de julio de 2010 · rvaquerizo

Gráficos dinámicos en R con la función text

En graphics tenemos la función text y hoy nos vamos a divertir con esta función. Simplemente lo que hace es poner un texto en un gráfico. Lo más sencillo: # Gráfico sin nada plot(rep(10, 10), rep(10, 10), ann = FALSE, type = "n", axes = FALSE) # Ponemos un texto en el centro text(10, 10, "Ejemplo de uso de text") En un gráfico sin nada escribimos; sólo indicamos la posición y el texto a escribir. Vamos añadiendo opciones: # Gráfico sin nada plot(rep(10, 10), rep(10, 10), ann = FALSE, type = "n", axes = FALSE) # Ponemos un texto en el centro text(10, 10, "Ejemplo de uso de text", srt = 45, col = 1, cex = 3, vfont = c("sans serif", "plain")) Ahora modificamos la inclinación del texto con srt, el color, el tamaño y con vfont la fuente. Podemos jugar con los colores del texto realizando un bucle for: ...

22 de julio de 2010 · rvaquerizo

Laboratorio de código SAS. Vistas + PROC MEANS vs. PROC SQL

Las vistas son muy importantes cuando trabajamos con SAS. El problema del espacio in disco se acentúa cuando trabajamos con SAS; este problema podemos minimizarlo empleando vistas. También hay otras situaciones in las que se recomienda usar vistas: cuando realizamos agregaciones sobre campos de una tabla y, a la vez, realizamos una operación sobre estos campos, es muy habitual emplear el PROC SQL. Ejemplo de lo que cuento: data importes; do idcliente = 1 to 2000000; importe = ranuni(34) * 1000; output; end; run; * FORMA 1: SQL; proc sql; select var(sqrt(importe)), var(importe) from importes; quit; Sobre una tabla con 2.000.000 de registros, hacemos la varianza de un campo importe y de la raíz cuadrada de ese mismo campo importe. Es decir, hacemos la varianza sobre la operación aritmética de un campo. Para hacer este trabajo con PROC MEANS sin tener que crear un nuevo campo in la tabla, haríamos una vista y un MEANS posteriormente: ...

19 de julio de 2010 · rvaquerizo

Monográfico. Funciones INTNX e INTCK para fechas en SAS

Las funciones INTNX e INTCK de SAS atraen muchas visitas a esta web. Aunque ya hay algún mensaje en el que muestro cómo funcionan, creo que algunos trabajadores me agradecerán este monográfico. INTNX e INTCK son funciones para trabajar con fechas en SAS. INTNX sirve para trabajar con periodos, por lo que el resultado que ofrece será una fecha; e INTCK sirve para trabajar con intervalos, por lo que el resultado que nos ofrece será un número entero. Ésta es la premisa fundamental. Entonces: ...

6 de julio de 2010 · rvaquerizo

Gráficos de densidades con SAS y el PROC KDE

El PROC KDE de SAS está incluido en el módulo SAS/STAT. Es un procedimiento que nos permite estudiar gráficamente las distribuciones de variables continuas. Lo que nos produce son gráficos de densidades. Para seguir el ejemplo, nos vamos a ir a Yahoo Finance y descargarnos un evolutivo del IBEX de los últimos tres meses (yo realizo este proceso con Excel). Una vez tengamos el dataset creado, para el análisis de la densidad univariante podemos hacer: ...

29 de junio de 2010 · rvaquerizo

Trucos SAS. Envío de email con DATA

Si deseamos enviar un email con SAS, hemos de realizar un proceso similar al que os presento a continuación. Es una duda que me ha llegado a través de correo electrónico; la resolución la comparto con todos por si vuelve a surgir. No quiero plantear macros complicadas ni parametrizaciones “extrañas”. Esto se hace a través de FILENAME EMAIL: filename outbox email "rvaquerizo@analisisydecision.es"; data _null_; file outbox to=("rvaquerizo@analisisydecision.es") cc=("rvaquerizo@analisisydecision.es") subject="Prueba" attach="c:\temp\borra.sas"; * CUERPO DEL MENSAJE; put "Este es un mensaje automático."; put " "; put " "; run; En outbox ponemos el correo de salida; después hacemos un DATA _NULL_ que escribe en el buzón de salida; en TO ponemos los destinatarios entrecomillados; en CC las copias; en SUBJECT ya sabéis, y en ATTACH también. Después, si queremos escribir en el cuerpo del mensaje, empleamos PUT. ...

28 de junio de 2010 · rvaquerizo

Monográfico. Un poco de PROC LOGISTIC

El PROC LOGISTIC es un procedimiento de SAS que nos ha dado muchas satisfacciones a los dinosaurios como el ahora escribiente. La regresión logística es uno de los modelos de regresión más utilizados y es bien conocido por todos mis lectores. El problema es muy sencillo: hemos de clasificar una población dividida en dos partes a partir de unas variables independientes. Su aplicación es muy extensa: patrones de fuga, propensiones de compra, salud, fraude… ...

24 de junio de 2010 · rvaquerizo

Truco R. Insertar imagen en un gráfico

Quería pintaros mi estimación sobre el mundial de Sudáfrica con R. La he hecho con el corazón más que con la cabeza. Es evidente que no será así. Esta estimación la pinto utilizando dos paquetes de R más que interesantes. El rimage no está en CRAN; es una cosa muy rara, un paquete propietario pero que tiene la función read.jpeg que permite crear objetos de imagen en R. El otro paquete interesante es TeachingDemos, que nos permite añadir imágenes a los gráficos de R; me acerqué a él cuando esta web tenía un logo; ahora ya no lo tiene. También me parece que puede ser de utilidad la función download.file. ...

22 de junio de 2010 · rvaquerizo

Trucos R. Conectar a internet por el puerto 8080

Con R hay veces que no podemos acceder a internet desde nuestro trabajo. Esto es porque el puerto 80 suele estar cerrado por motivos de seguridad. Sin embargo, el puerto 8080 es más habitual dejarlo abierto. Para conectar R con internet y facilitar la descarga de paquetes, la conexión con Yahoo Finance, Bloomberg… podemos hacer lo siguiente: buscar el Rgui.exe en nuestro equipo y, a la hora de ejecutarlo, poner la opción --internet2. Con ello hacemos que R se conecte a internet con el puerto 8080. Por ejemplo, en Windows sería: ...

22 de junio de 2010 · rvaquerizo

Trucos SAS. Modificar el nombre de una tabla con código

Dando un repaso a las entradas de Google me he encontrado repetida la frase: «cambiar el nombre de un dataset SAS». Imagino que desearán cambiar el nombre de un dataset con código sin realizar un paso DATA. Para hacer esta labor, hemos de emplear el PROC DATASETS y la sentencia CHANGE. Veamos un código de ejemplo muy sencillo: * DATASET ALEATORIO; data sasuser.uno; do i = 1 to 1000; aleat = ranuni(9); output; end; run; * CAMBIAMOS EL NOMBRE; proc datasets lib=sasuser nolist; change uno=borrar; run; quit; * ELIMINAMOS EL DATASET; proc delete data=sasuser.borrar; run; El código es extremadamente sencillo. Imagino que las entradas que estaban llegando con esta duda buscaban algo parecido a esto. El PROC DATASETS es un gran desconocido. Saludos.

16 de junio de 2010 · rvaquerizo