Archivo de la etiqueta: XML

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

Vamos a generar el siguiente gráfico comparativo:

interes-vs-euribor.PNG

Comenzamos el trabajo con R:

require(XML)
pag="http://sdw.ecb.europa.eu/quickview.do?SERIES_KEY=124.MIR.M.ES.B.L22.F.R.A.2250.EUR.N"
depos=readHTMLTable((((pag))))
#str(depos)
#Creamos un data frame legible
aux1=data.frame(depos[6])
#Eliminamos títulos
aux1=aux1[4:nrow(aux1),]
#Prefiero trabajar con 2 df
mes=as.vector(aux1$NULL.V1)
#Transformo un factor de R a número
valor=as.data.frame(as.numeric(
levels(aux1$NULL.V2)[aux1$NULL.V2]))
#Creo el df final
depos=data.frame(cbind(mes,valor))
#No quiero factores por ningún sitio
depos$mes=as.character(depos$mes)
str(depos)
names(depos)=c("mes","interes")
head(depos)

Es un código sucio, no me he preocupado mucho por él. Con la función readHTMLTable leemos la tabla del report que nos ofrece el BCE. STR es muy importante porque nos quedaremos Sigue leyendo Stadistical data warehouse del European Central Bank con R y los depósitos a pérdidas

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:


#Paquete necesario para leer XML
require(XML)
arch = "http://datos.bancomundial.org/sites/default/files/indicators/es/co2-emissions-metric-tons-per-capita_es.xml"
doc <- xmlTreeParse(arch,getDTD=T,addAttributeNamespaces=T)
arriba = xmlRoot(doc)
#Vemos los nombres de los campos de la tabla
names(arriba[[1]])

Leemos directamente de la web el documento XML. xmlTreeParse crea la estructura del XML en R, de este modo podemos acceder a los datos. Lo primero que vamos a hacer es saber los nombres de las columnas que deseamos leer, para ello xmlRoot obtiene los nodos raiz de la estructura que hemos leído. La función names obtiene los nombres Sigue leyendo Trucos R. Leer archivos XML con R

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:

library(XML)
pag="http://en.wikipedia.org/wiki/World_population"
total_tablas=readHTMLTable(pag)
str(total_tablas)

Nos interesa saber la población estimada y tenemos 17 elementos. Nos vamos a quedar con las estimaciones desde el siglo XVIII en adelante. Tenemos el problema con los formatos de los números:


poblacion=data.frame(total_tablas$`Estimated world population at various dates (in millions) [citation needed]`)
#NOS QUEDAMOS CON LOS REGISTROS QUE NOS INTERESAN
poblacion=poblacion
#FUNCION PARA TRANSFORMAR CARACTER A NUMERO
cambio=function(x){
x=(gsub("([[:punct:]])","",x))
x=(gsub("([[:alpha:]])","",x))
#AJUSTE A MEDIDA, POR NO COMPLICAR LA FUNCION
x=as.numeric(gsub(" 1 ","",x))}
#PODEMOS USAR SAPPLY:
poblacion$Year=cambio(poblacion$Year)
poblacion$World=cambio(poblacion$World)
poblacion$Africa=cambio(poblacion$Africa)
poblacion$Asia=cambio(poblacion$Asia)
poblacion$Europe=cambio(poblacion$Europe)
poblacion$Latin.America.Note.1.=cambio(poblacion$Latin.America.Note.1.)
poblacion$Northern.America.Note.1.=cambio(poblacion$Northern.America.Note.1.)
poblacion$Oceania=cambio(poblacion$Oceania)

Analicemos si Malthus tenía motivos para ser tan cenizo Sigue leyendo Un homenaje a Malthus con R

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(pagina$NULL.Ganador,3,length(pagina$NULL.Ganador)))
names(ganador)=primero
segundo=data.frame(substr(pagina$NULL.Segundo.puesto,3,length(pagina$NULL.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:

ganador=subset(ganador,nchar(as.character(primero))>0)
segundo=subset(segundo,nchar(as.character(segundo))>0)
library(plyr)
tabla=ddply(ganador,"primero",summarise,veces=length(primero))
library(plotrix)
pie3D(tabla$veces,labels=tabla$primero,main="Campeones históricos")

Vemos que al final esto siempre lo ganan los mismos. Nos facilita una predicción.Veamos los finalistas:

finalistas=data.frame(rbind(as.matrix(ganador,dimnames=list("finalista")),
as.matrix(segundo,dimnames=list("finalista"))))
pie3D(tabla$veces,labels=tabla$primero,main="Finalistas")

Un poco vago con el nombre de las variables. A la vista de los datos la final será Brasil - Argentina. Lo que no tengo tan claro es cúal ganará... Seguiremos trabajando con XML y con plotrix.