R

Descubriendo ggplot2

Bye bye plot, bye bye points, bye bye abline,…Imagen de previsualización de YouTubeComo la canción Bye bye life. He escrito en el Tinn-R install.packages(“ggplot2”) y estoy como un niño con zapatos nuevos. Así estoy desde que he comenzado a trabajar con el paquete ggplot2 de R. No es que no lo conociera, es que me defiendo demasiado bien con mis plot y mis points. Había visto algún gráfico espectacular pero el código asustaba. Sin embargo este paquete es tema de conversación todas las semanas con algún usuario de R. Entonces me siento delante de R y tras escribir library(ggplot2)… x <- abs(rnorm(20,10,2))y <- abs(rnorm(20,5,1))grupo <- rpois(20,2)datos <- data.frame(cbind(grupo,x,y))#Gráfico de dispersióng <- ggplot(datos,aes(x,y))g + geom_point()#Identificamos los puntosg + geom_point(aes(colour = grupo)) ¿Qué os parece? Anda que no es fácil trabajar con ggplot2. Además tiene su propia web de ayuda con una gran cantidad de ejemplos ymuy documentada por lo que no es necesario un manual. Con un acercamiento y algunos ejemplos me parece suficiente.Particularmente me encantan los boxplot y además podemos añadir puntos:

Stadistical data warehouse del European Central Bank con R y los depósitos a pérdidas

Más ejemplos de uso del paquete de R XML. Vamos a leer datos del data warehouse del European Central Bank. Si dais una vuelta por la web tendréis interesantes datos económicos de los países de la Unión Europea. A modo de ejemplos vamos a leer los datos de los tipos de interés medios a 12 meses que se están dando por los bancos en España y la evolución del Euribor a 6 meses.
– Report Tipos: http://sdw.ecb.europa.eu/quickview.do?SERIES_KEY=124.MIR.M.ES.B.L22.F.R.A.2250.EUR.N
– Report Euribor: http://sdw.ecb.europa.eu/quickview.do?SERIES_KEY=143.FM.M.U2.EUR.RT.MM.EURIBOR6MD_.HSTA

Macros SAS. Dataset a data frame R

Voy a presentaros la versión Beta de la macro de SAS que genera data frames a partir de una tabla SAS en Windows, la versión en Linux me la ahorraré hasta el día que pueda instalar SAS en mi máquina virtual. La macro la iré mejorando y evolucionando, probablemente estas mejoras no las colgaré y no retome el hilo hasta que tenga una V1. El tema es sencillo y anteriormente ya hice mención a este método pero ahora doy una vuelta de tuerca y directamente creamos data frames a partir de data sets. Os pongo el total del código y comentaré los pasos más interesantes, por supuesto es mejorable. Lo que no puedo asegurar es si funciona bajo WPS porque no me han renovado la licencia. Todo el código seguido:

Trucos R. Leer archivos XML con R

Un truco de R práctico que busca la colaboración de los lectores para mejorarlo. Se trata de leer ficheros xml con R. Los más asiduos ya sabéis que paquete voy a emplear, el XML. En los últimos tiempos la sentencia require(XML) aparece al principio de casi todos mis códigos en el Tinn-R. El ejemplo que ilustrará el truco lee de la BBDD del banco mundial en español el indicador de emisiones de CO2 en toneladas por habitante y año. La sintaxis es de este modo:

Trucos R. Establecer la configuración local de una fecha

Cuando manejamos datos las fechas nos producen muchos quebraderos de cabeza, por ejemplo cuando tenemos que transformar un caracter a fecha. En mi opinión R es una de las herramientas las flexibles y rápidas para trabajar con fechas, claro que acostumbrado a SAS cualquier otra herramienta me parece perfecta. A lo que vamos, imaginemos la siguiente situación :

?as.Date

x <- c("1jan1960", "2jan1960", "31mar1960", "30jul1960")

z <- as.Date(x, "%d%b%Y")

z

[1] NA NA "1960-03-31" "1960-07-30"

Se trata de transformar un texto a fecha en R. El formato del texto es d mes en inglés año con 4 cifras. Para transformar a fecha tenemos la función as.Date que recibe como parámetros el objeto y el formato de la fecha, el más habitual sería %d/%m/%Y 10/09/1976. Para meses en formato nombre empleamos %b pero en este caso «1jan1960» nos produce un valor perdido sin embargo «31mar1960» si se transforma correctamente ¿Por qué motivo sucede esto?

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 de las primeras que hice allá en 2001 (creo) cuando empecé a conocer esto de R. Por aquellos entonces aseguré que el futuro pasaba por R y 9 años después sigo diciendo lo mismo, el tiempo me dará la razón, lo que no me imaginaba que hacía falta tanto tiempo. En fin, historias del dinosaurio. Vamos con la función «histórica». Al no disponer de la función mod en R la programé:

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:

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 el 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

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:

Monográfico. Clasificación con SVM en R

Las máquinas de vectores de soporte, Support Vector Machines, SVM a partir de ahora, son un conjunto de técnicas estadísticas que nos permiten clasificar una población en función de la partición en subespacios de múltiples variables. Parte de la idea de dividir de forma lineal un conjunto de múltiples dimensiones. Creamos muchos hiperplanos que nos dividen las observaciones. Es una técnica que está ganando popularidad y que por supuesto podemos realizarla con R. Para ello tenemos algunos paquetes específicos como kvm, svmlight y el e1071. Este último es al que pretendo acercarme hoy.

Un homenaje a Malthus con R

Hoy quería yo revindicar la figura de un tipo bastante maltratado: Thomas Malthus. Maltratado porque era un poco reaccionario y facha, y parece que eso es suficiente para que se olviden de uno, aunque fuera el tipo que más ha aportado a la demografía.Y el homenaje tenía que hacérselo con el paquete de R que más utilizo últimamente, el XML y algunos sencillos gráficos creados con R-commander. Malthus lo que venía a decir es que somos muchos, demasiados y encima la cosa tenía muy mala pinta. Parece que tiene razón, pero vamos a verlo gráficamente. Comenzamos:

Ejemplo de uso del paquete XML de R

Quería poneros unos apuntes sobre el paquete XML de R. El caso es que entre todos los fregados en los que ando metidos he retomado el tema de leer páginas web con R. Y con esto he llegado a la sentencia install.packages(«XML») y con la fiebre mundialista estoy en lo siguiente:

pag="http://es.wikipedia.org/wiki/Anexo:Finales_de_la_Copa_Mundial_de_F%C3%BAtbol"

pagina=data.frame(readHTMLTable(pag))

ganador=data.frame(substr(paginaNULL.Ganador,3,length(paginaNULL.Ganador)))

names(ganador)=primero

segundo=data.frame(substr(paginaNULL.Segundo.puesto,3,length(paginaNULL.Segundo.puesto)))

names(segundo)="segundo"

Muy sencillo, leemos la wikipedia y nos creamos un objeto con las finales de todos los mundiales. Me voy a centrar en los finalistas. Parece que tengo algún problema con las tildes y con nulos. Grafiquemos un poco: