El objetivo de la entrada es empezar a analizar tweets con R y qué mejor comienzo que usar el hashtag #rstats para ver los usuarios que más lo utilizan. El primer paso es crear una app con Twitter; para ello, nos dirigimos a https://apps.twitter.com/ y creamos una aplicación. Crearla es muy sencillo: sólo necesitamos una descripción y un nombre. La aplicación será la que permitirá a R interaccionar con Twitter mediante OAuth; para realizar esta interacción entre la aplicación y nuestra sesión de R es imprescindible:
Consumer keyConsumer secretAccess TokenAccess Token secret
Para obtener estos cuatro elementos, una vez creada nuestra aplicación, pulsamos el botón Test OAuth de la parte superior derecha de la pantalla y nos aparecerán. Con estos elementos comenzamos a trabajar en R mediante el paquete twitteR:
# install.packages("twitteR")
# install.packages("base64enc")
library(twitteR)
library(base64enc)
consumer_key <- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
consumer_secret <- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
access_token <- "81414758-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
access_secret <- "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
setup_twitter_oauth(consumer_key, consumer_secret, access_token = access_token, access_secret = access_secret)
Recuerdo: consumer_key, consumer_secret, access_token y access_secret los hemos obtenido cuando creamos nuestra aplicación en Twitter que va a interactuar con R mediante OAuth y, por ello, usamos la función setup_twitter_oauth para que twitteR pueda obtener información de nuestra aplicación. Ya estamos en disposición de leer tweets:
rstats_tweets <- searchTwitter("#rstats", n = 9999, since = '2015-11-01')
datos <- do.call("rbind", lapply(rstats_tweets, as.data.frame))
names(datos)
La función searchTwitter será la que más uséis cuando trabajéis con R; en este caso buscamos el hashtag #rstats, limitamos la búsqueda a 9999 tweets desde el 01 de noviembre de 2015. Se genera una lista que transformamos en un data frame mediante la función do.call (también podemos emplear twListToDF). Otro ejemplo: si deseamos ver los tweets del usuario @r_vaquerizo, hacemos:
vaquerizo <- userTimeline('r_vaquerizo', n = 100)
vaquerizo2 <- do.call("rbind", lapply(vaquerizo, as.data.frame))
Pero volvamos con #rstats; ya tenemos un data frame y deseamos saber qué usuarios son los que más han empleado el hashtag:
usuarios <- subset(datos, isRetweet == FALSE)$screenName
usuarios_tabla <- sort(table(usuarios), decreasing = TRUE)
head(usuarios_tabla, 30)
El manejo de estos datos es más sencillo: eliminamos los retweets y nos quedamos sólo con los nombres de los usuarios que han escrito el tweet, los tabulamos y ordenamos. Podemos hacer un head para ver los 30 primeros. Evidentemente, RBloggers está a la cabeza.
A ver si puedo ir poniendo algunas cosas que voy haciendo y, si alguien está interesado en algún proyecto concreto, que se ponga en contacto conmigo. Saludos.