

library(tidyverse)
library(lubridate)



# data --------------------------------------------------------------------

tw_es <- read_rds("coronavirus_es.RDS")



# data preparation --------------------------------------------------------

# Para el análisis de los tweets que se hacen durante un momento determinado,
# solo se necesitan las variables text y created

tw_es <- tw_es %>% 
  select(text, created)

# Cuando se trabajan con fechas siempre hay que tener cuidado
# con el huso horario en el que está la fecha.
# Le especificamos a R que queremos que nos convierta "created"
# al uso horario de España
tw_es$created <- with_tz(tw_es$created, tzone = "Europe/Madrid")

# Imaginamos que además, vamos a querer agrupar la información por
# minutos. Por lo tanto, en este contexto, los segundos en los que se
# publicó un tweet es irrelevante
second(tw_es$created) <- 0

# Nos podemos asegurar rápidamente de que hemos
# hecho las transformaciones correctamente.
tw_es %>% 
  filter(created == ymd_hms("2020-02-28 00:48:00", tz = "Europe/Madrid"))


# En este caso, queremos saber la cantidad de tweets que hubo por minuto.

tw_per_minute <- tw_es %>%
  group_by(created) %>% 
  summarise(n = n())


# vamos a filtrar los tweets escritos en un intervalo de tiempo determinado

tw_per_minute <- tw_per_minute %>% 
  filter(
    created > ymd_hms("2020-02-27 00:00:00", tz = "Europe/Madrid"),
    created < ymd_hms("2020-02-29 00:00:00", tz = "Europe/Madrid")
  )

# Si representamos la información

p <- tw_per_minute %>%
  ggplot(
    aes(x = created,
        y = n
    )
  ) +
  geom_line(color = "#3eaca8") +
  labs(
    title = "Número de tweets por minuto",
    y = "",
    x = ""
  ) +
  theme_minimal() +
  scale_x_datetime(date_breaks = "30 mins",
                   date_labels = "%H:%M"
  )

p


# Según en qué contexto, puede ser útil tener un
# gráfico dinámico.
# La librería plotly nos permite convertir el 
# gráfico estático que hemos hecho antes
# en uno interactivo de forma muy sencilla.
plotly::ggplotly(p)
