Importacion de Archivos

Se importan los diferentes archivos CSV de los candidatos, esto para realizar un buen analisis de los datos

Maynez <- read_csv("C:/R/Maynez.csv")
## Rows: 100 Columns: 6
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (1): text
## dbl  (3): shares, comments, likes
## lgl  (1): isVideo
## dttm (1): time
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Claudia <- read_csv("C:/R/Claudia.csv")
## Rows: 100 Columns: 6
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (1): text
## dbl  (3): comments, likes, shares
## lgl  (1): isVideo
## dttm (1): time
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Xochilt <- read_csv("C:/R/Xochilt.csv")
## Rows: 100 Columns: 6
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (1): text
## dbl  (3): comments, likes, shares
## lgl  (1): isVideo
## dttm (1): time
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(Maynez)
View(Claudia)
View(Xochilt)

Calcular la cantidad de interacciones

Los archivos contienen información sobre la cantidad de likes, comentarios y compartidos. Es importante sumar estos valores para obtener un total que pueda ser utilizado posteriormente para crear gráficos.

total_likes_Maynez <- sum(Maynez$likes, na.rm = TRUE)
total_likes_Claudia <- sum(Claudia$likes, na.rm = TRUE)
total_likes_Xochilt <- sum(Xochilt$likes, na.rm = TRUE)

total_share_Maynez <- sum(Maynez$shares, na.rm = TRUE)
total_share_Claudia <- sum(Claudia$shares, na.rm = TRUE)
total_share_Xochilt <- sum(Xochilt$shares, na.rm = TRUE)

total_comments_Maynez <- sum(Maynez$comments, na.rm = TRUE)
total_comments_Claudia <- sum(Claudia$comments, na.rm = TRUE)
total_comments_Xochilt <- sum(Xochilt$comments, na.rm = TRUE)

Crear dataframes para visualización

Creamos 3 dataframes que contentan a los 3 candidatos, esto con las cantidades de likes, compartidos y comentarios

comments_data <- data.frame(
  Candidato = c("Maynez", "Claudia", "Xochilt"),
  Comments = c(total_comments_Maynez, total_comments_Claudia, total_comments_Xochilt)
)

likes_data <- data.frame(
  Candidato = c("Maynez", "Claudia", "Xochilt"),
  Likes = c(total_likes_Maynez, total_likes_Claudia, total_likes_Xochilt)
)

shares_data <- data.frame(
  Candidato = c("Maynez", "Claudia", "Xochilt"),
  Shares = c(total_share_Maynez, total_share_Claudia, total_share_Xochilt)
)

Generaracion de graficos

Se grafican por separado el tipo de interaccion para ver que candidato tiene mayor cantidad de likes, asi como comentarios y compartidos

#Compartidos

ggplot(shares_data, aes(x = Candidato, y = Shares, fill = Candidato)) +
  geom_bar(stat = "identity") +
  labs(title = "Comparación de total de compartidos entre candidatos",
       x = "Candidatos",
       y = "Total Compartidos") +
  theme_minimal()

#Likes

ggplot(likes_data, aes(x = Candidato, y = Likes, fill = Candidato)) +
  geom_bar(stat = "identity") +
  labs(title = "Comparación de total de likes entre candidatos",
       x = "Candidatos",
       y = "Total Likes") +
  theme_minimal()

#Comentarios

ggplot(shares_data, aes(x = Candidato, y = Shares, fill = Candidato)) +
  geom_bar(stat = "identity") +
  labs(title = "Comparación de total de compartidos entre candidatos",
       x = "Candidatos",
       y = "Total Compartidos") +
  theme_minimal()

Graficación de la Comparativa de Likes y Compartidos de Cada Candidato

Se crean graficas para ver la relacion de interacciones que tiene cada cantidado

#Maynez

comparison_data_Maynez <- data.frame(
  Metric = c("Likes", "Compartidos"),
  Count = c(total_likes_Maynez, total_share_Maynez)
)

ggplot(comparison_data_Maynez, aes(x = Metric, y = Count, fill = Metric)) +
  geom_bar(stat = "identity") +
  labs(title = "Comparación likes/compartidos candidato Maynez",
       x = "Métrica",
       y = "Cantidad") +
  theme_minimal()

#Claudia

comparison_data_Claudia <- data.frame(
  Metric = c("Likes", "Compartidos"),
  Count = c(total_likes_Claudia, total_share_Claudia)
)

ggplot(comparison_data_Claudia, aes(x = Metric, y = Count, fill = Metric)) +
  geom_bar(stat = "identity") +
  labs(title = "Comparación likes/compartidos candidata Claudia",
       x = "Métrica",
       y = "Cantidad") +
  theme_minimal()

#Xochilt

comparison_data_Xochilt <- data.frame(
  Metric = c("Likes", "Compartidos"),
  Count = c(total_likes_Xochilt, total_share_Xochilt)
)

ggplot(comparison_data_Xochilt, aes(x = Metric, y = Count, fill = Metric)) +
  geom_bar(stat = "identity") +
  labs(title = "Comparación likes/compartidos candidata Xochilt",
       x = "Métrica",
       y = "Cantidad") +
  theme_minimal()

Graficación de Dispersión Relación de Likes y la Hora de Publicación

Para la creacion de una grafica de relacion de likes y hora es necesario tratar los datos y darle un formato correcto

#Función para convertir la hora al formato adecuado

convertir_hora <- function(data) {
  if ("time" %in% names(data)) {
    data$time <- as.POSIXct(data$time, format = "%Y-%m-%dT%H:%M:%S", tz = "UTC")
    data$hora <- format(data$time, format = "%H:%M:%S")
  } else {
    stop("La columna 'time' no se encuentra en los datos.")
  }
  return(data)
}

#Le damos el formato a cada csv de los candidatos 

Maynez <- convertir_hora(Maynez)
Claudia <- convertir_hora(Claudia)
Xochilt <- convertir_hora(Xochilt)

##Grafico de relacion Ahora con los datos con el formato correcto, ya podemos graficar

#Función para generar gráfico de dispersión

generar_grafico_dispersion <- function(data, candidato) {
  plot_ly(data = data, x = ~hora, y = ~likes, type = "scatter", mode = "markers", 
          marker = list(color = "#3498DB", opacity = 0.7)) %>%
    layout(title = paste("Relación entre likes y tiempo de publicaciones", candidato),
           xaxis = list(title = "Hora de publicación"),
           yaxis = list(title = "Likes"),
           showlegend = FALSE)
}

Generarcion de graficas

Se genera una grafica por cada candidato

grafico_dispersion_Maynez <- generar_grafico_dispersion(Maynez, "Maynez")
grafico_dispersion_Claudia <- generar_grafico_dispersion(Claudia, "Claudia")
grafico_dispersion_Xochilt <- generar_grafico_dispersion(Xochilt, "Xochilt")

#Maynez

grafico_dispersion_Maynez

#Clauida

grafico_dispersion_Claudia

#Xochilt

grafico_dispersion_Xochilt