Skip to content

Instantly share code, notes, and snippets.

@gonzalezgouveia
Last active June 7, 2019 16:11
Show Gist options
  • Save gonzalezgouveia/25895e2a1d23176d0099db035e240abe to your computer and use it in GitHub Desktop.
Save gonzalezgouveia/25895e2a1d23176d0099db035e240abe to your computer and use it in GitHub Desktop.
library(tm)
library(SnowballC)
library(wordcloud)
library(RColorBrewer)
library(tidyverse)
library(ggwordcloud)
# Hecho por Rafa @GonzalezGouveia
# Con gusto para #DatosDeMiercoles, propuesto por @R4DS_es
# leyendo datos de capitales
buenos_aires <- readr::read_csv("https://raw.githubusercontent.com/cienciadedatos/datos-de-miercoles/master/datos/2019/2019-06-05/buenos_aires.csv")
cdmx <- readr::read_csv("https://raw.githubusercontent.com/cienciadedatos/datos-de-miercoles/master/datos/2019/2019-06-05/cdmx.csv")
rio <- readr::read_csv("https://raw.githubusercontent.com/cienciadedatos/datos-de-miercoles/master/datos/2019/2019-06-05/rio.csv")
santiago <- readr::read_csv("https://raw.githubusercontent.com/cienciadedatos/datos-de-miercoles/master/datos/2019/2019-06-05/santiago.csv")
########################################
# Un poquito de text mining muy básico #
########################################
# mini-diccionario
# corpus es el nombreque se le da al conjunto de todos los textos a analizar
# stopword son palabras que no ayudan al análisis como "el", "la", y así...
# cambiar aqui la capital para cada grafica
text <- santiago$descripcion
# Cargar datos como un corpus
docs <- Corpus(VectorSource(text))
# pasar textos a minúsculas
docs <- tm_map(docs, content_transformer(tolower))
# quitar números
docs <- tm_map(docs, removeNumbers)
# quitar stopwords en español
docs <- tm_map(docs, removeWords, stopwords("spanish"))
# quitar stopwords en inglés
docs <- tm_map(docs, removeWords, stopwords("english"))
# quitar puntuación
docs <- tm_map(docs, removePunctuation)
# eliminar espacios en blanco extras
docs <- tm_map(docs, stripWhitespace)
# crear tabla de frecuencias
dtm <- TermDocumentMatrix(docs)
m <- as.matrix(dtm)
v <- sort(rowSums(m),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
print(head(d, 10))
d %>%
slice(1:50) %>%
mutate(angulo = 90 * sample(c(0, 1), n(), replace = TRUE, prob = c(60, 40))) %>%
ggplot(aes(label = word,
size = freq,
angle = angulo,
color = freq)) +
# geom_text_wordcloud() +
geom_text_wordcloud_area() +
scale_size_area(max_size = 12) +
theme_minimal()
# cambiar para cada ciudad
ggsave('./images/datos_de_miercoles_airbnb_santiago.png')
# Hecho por Rafa @GonzalezGouveia
# Con gusto para #DatosDeMiercoles, propuesto por @R4DS_es
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment