R

Acceso a Google Analytcs desde R

R

Google Analytics puede usarse desde su consola o bien descargando datos y procesándolos por tu cuenta. Para lo cual, desde R,

require(RGoogleAnalytics)

client.id <- "1415926535-u377en6un7lugar2de7lamancha0de1cuyo5nombre0m.apps.googleusercontent.com"
client.secret <- "CEcI5nEst6pAs6Un2SecREt6-f8nt"
token <- Auth(client.id,client.secret)
#save(token,file="~/.ga_token_file")

Obviamente, para lo anterior:

  • Hay que instalar y cargar los paquetes relevantes
  • Tienes que usar tu propio id y secreto de cliente como indica aquí
  • Tienes que tener una cuenta en Google Analytics, claro

Además, puedes descomentar la última línea si quieres guardar tus credenciales para futuros usos (con las debidas medidas de seguridad). Tras lo cual,

R sobre el EC2 de Amazon hace casi siete años: una concesión a la melancolía

Corría el año 2009 cuando comencé mi segunda aventura bloguera (nadie, yo incluido, quiere rememorar la primera) cuando Raúl Vaquerizo tuvo la caridad de aceptarme como colaborador en Análisis y Decisión.

En diciembre de aquel año escribí cómo utilizar R en una cosa que entonces comenzaba a sonar: la nube y, en concreto, el servicio EC2 de Amazon.

El resultado, probablemente totalmente desfasado, fue este.

Material de hemeroteca, alimento de melancolías.

Detección de "outliers" locales

Aunque outlier local parezca oxímoron, es un concepto que tiene sentido.

Un outlier es un punto dentro de un conjunto de datos tan alejado del resto que diríase generado por un mecanismo distinto que el resto. Por ejemplo, puedes tener las alturas de la gente y alguna observación que parece producto de otra cosa como, por ejemplo, errores mecanográficos en la transcripción. Un outlier está lejos del resto. Pero, ¿cuánto?

Con ciertas distribuciones tiene sentido pensar que los outliers son puntos a una distancia superior a nosecuántas desviaciones típicas de la media. Más en general, fuera de un determinado círculo. Una medida similar: serían outliers aquellos puntos que a una determinada distancia solo tienen un determinado porcentaje (pequeño) del resto. Todas estas son medidas globales.

¿Mis conciudadanos no tienen wifi?

R

A alguien leí el otro día que decía que en un bar de carretera habían colocado un cartel diciendo: “Hemos quitado el periódico y hemos puesto wifi”. Viene esto a cuento de

library(rvest)
library(<a href="http://inside-r.org/packages/cran/tm">tm)
library(wordcloud)

res <- sapply(1:17, function(i){
  url <- paste("https://decide.madrid.es/participatory_budget/investment_projects?geozone=all&page=",
  i, "&random_seed=0.28", sep = "")
  tmp <- html_nodes(
    read_html(url),
    xpath = "//div[starts-with(@id, 'spending_proposal')]/div/div/div[1]/div/h3/a/text()")

  as.character(tmp)
})

tmp <- unlist(res)

tmp <- Corpus(VectorSource(tmp))
tmp <- tm_map(tmp, stripWhitespace)
tmp <- tm_map(tmp, content_transformer(tolower))
tmp <- tm_map(tmp, removeWords, stopwords("spanish"))

wordcloud(tmp, scale=c(5,0.5),
  max.words=100,
  random.order=FALSE,
  rot.per=0.35, use.r.layout=FALSE,
  colors=brewer.pal(8, "Dark2"))

que hace lo que dice, es decir,

Coordenadas polares por doquier

R

El otro día pasé por uno de esos sitios en los que exponen en las paredes obras de artistas medianos con el precio debajo. Me quedé mirando una muy… concéntrica porque me recordaba a lo que nos regala a menudo Antonio Chinchón. Pregunté de qué trataba la cosa y tuvieron la paciencia de explicármelo: al lado había una foto enorme y, se conoce, las cosas concéntricas eran una reordenación de los píxels de la primera. Una especie de tortilla de patata deconstruida a lo Adriá, pero con fotos.

Rmd2R: un conversor de lo que su propio nombre indica

Mis clases de/con R suelen consistir en un guión que es un programa en R con muchos comentarios y ejercicios. Con el tiempo, estos últimos tienden a crecer hasta el punto de que se convierte casi en un fichero de texto comentado con aspersión —en su acepción no-DRAE de efecto— de líneas de código.

Mejor, me he dicho recientemente, usar Rmarkdown.

Pero Rmarkdown sirve para lo que sirve: como fuente para compilar ficheros pensados para ser leídos por seres humanos. Contiene demasiada información irrelevante —formato, etc.— para un guión.

¿Tanto ha llovido (en términos de precisión numérica) desde 2008?

Acabo de ejecutar

set.seed(1234)

x <- runif(1e6)
x.shift <- 1e9 + x

sd(x)
sd(x.shift)

sqrt(sum((x - mean(x))^2) / (length(x - 1)))
sqrt(sum((x.shift - mean(x.shift))^2) / (length(x - 1)))

sd.sum.squares <- function(x){
  n <- length(x)
  suma <- sum(x)
  suma.cuadrados <- sum(x^2)
  sqrt((n * suma.cuadrados - suma^2) / (n * (n-1)))
}

sd.sum.squares(x)
sd.sum.squares(x.shift)

inspirado por esto y me pregunto: ¿tanto ha llovido en términos de precisión numérica desde 2008?

Descarga de datos del Ibex 35 (¿y otros?) minuto a minuto en tiempo (casi) real

El código es

library(httr)
library(plyr)
 
base.url <- "http://www.infobolsa.es/1/wtdb/ChartIntraday"
 
res <- POST(base.url,
            body = list(mv = "M SAN",
                        date = "20160518",
                        compressionMult = 1,
                        isSession = 1))
 
dat <- content(res, as = "parsed",
                type = "application/json")
 
dat <- dat$answer$LST$TV$T09
dat <- ldply(dat, unlist)

Los mutatis mutandis, si alguien tiene la gentileza, en los comentarios.

Cómo ir de Regumiel de la Sierra a Montejo de la Vega de la Serrezuela

R

Pues así:

  • Continúe por CALLE SAN JUAN DE RABANERA
  • Gire justo a la izquierda por CALLE DIPUTACION
  • Gire justo a la derecha por CALLE CABALLEROS
  • Gire ligeramente a la izquierda por PLAZA RAMON Y CAJAL
  • Gire a la izquierda por PLAZA MARIANO GRANADOS
  • Gire a la izquierda por PASEO ESPOLON (EL)
  • Gire ligeramente a la izquierda por AVENIDA VALLADOLID
  • Gire ligeramente a la izquierda por N-122
  • Continúe por A-11
  • Continúe por N-122
  • Gire ligeramente a la izquierda por CARRETERA SIN NOMBRE
  • Continúe por N-122
  • Gire a la izquierda por BU-924
  • Continúe por N-122
  • Continúe por BU-930
  • Gire a la derecha por BU-940
  • Continúe por CALLE FELIPE GARCIA
  • Continúe por BU-940
  • Gire ligeramente a la derecha por BU-932
  • Gire a la izquierda por CALLE PAJARES
  • Continúe por BU-V-9321
  • Continúe por SG-V-9321
  • Continúe por road
  • Continúe por SG-V-9321
  • Gire a la derecha por CALLE BAÑUELOS

O al menos, eso dice la novísima función caRtociudad::get_cartociudad_route. Que, además (y además de otras cosas) te dice que, en coche, tardarías 6969024… ¿milisegundos?