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)
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)
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)
)
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()
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()
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)
}
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