Para realizar el analisis y ontener los csv con los datos de los candidatos a la precidencia utilice la pagina de https://apify.com/ la cual no extrajo los datos necesarios para el analisis.
cabe recalcar que cambiamos los nombres de los candidatos claudia, xoxhilt y mainez respectivamente por candidatoA, candidatoB y CandidatoC. lo primero que ocupamos para realizar nuestro analisis en Rstudio es:
Instalar y cargar las librerías necesarias: En esta sección, se instalan y cargan las librerías necesarias para el análisis y visualización de datos. ggplot2 se utiliza para crear gráficos, mientras que reshape2 se utiliza para manipular los datos en formato largo.
library(ggplot2)
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.1.3
Aquí se leen los archivos CSV que contienen los datos de cada candidato y se almacenan en tres variables separadas: candidatoA, candidatoB y candidatoC.
candidatoA <- read.csv("C:/Users/Charly/OneDrive/Desktop/Documentos/Octavo Semestre/SERGIO ANALISIS DE DATOS/unidad 4/Claudia.csv")
candidatoB <- read.csv("C:/Users/Charly/OneDrive/Desktop/Documentos/Octavo Semestre/SERGIO ANALISIS DE DATOS/unidad 4/Xochilt.csv")
candidatoC <- read.csv("C:/Users/Charly/OneDrive/Desktop/Documentos/Octavo Semestre/SERGIO ANALISIS DE DATOS/unidad 4/Maynez.csv")
En esta sección, se renombran las columnas de cada conjunto de datos para que coincidan con un formato común.
names(candidatoA) <- c("time", "isVideo", "comments", "likes", "shares", "text")
names(candidatoB) <- c("time", "comments", "likes", "shares", "text", "isVideo")
names(candidatoC) <- c("text", "time", "shares", "comments", "isVideo", "likes")
En este bloque, se seleccionan las columnas relevantes (likes, comentarios y compartidos) y se convierten a tipo numérico.
candidatoA <- candidatoA[, c("likes", "comments", "shares")]
candidatoB <- candidatoB[, c("likes", "comments", "shares")]
candidatoC <- candidatoC[, c("likes", "comments", "shares")]
# Convertir las columnas a numéricas
candidatoA$likes <- as.numeric(as.character(candidatoA$likes))
candidatoA$comments <- as.numeric(as.character(candidatoA$comments))
candidatoA$shares <- as.numeric(as.character(candidatoA$shares))
candidatoB$likes <- as.numeric(as.character(candidatoB$likes))
candidatoB$comments <- as.numeric(as.character(candidatoB$comments))
candidatoB$shares <- as.numeric(as.character(candidatoB$shares))
candidatoC$likes <- as.numeric(as.character(candidatoC$likes))
candidatoC$comments <- as.numeric(as.character(candidatoC$comments))
candidatoC$shares <- as.numeric(as.character(candidatoC$shares))
Aquí se agrega una nueva columna llamada “time” a cada conjunto de datos, que representa el índice de fila de los datos.
candidatoA$time <- seq_len(nrow(candidatoA))
candidatoB$time <- seq_len(nrow(candidatoB))
candidatoC$time <- seq_len(nrow(candidatoC))
En esta sección, se agrega una nueva columna llamada “candidate” a cada conjunto de datos para identificar el candidato al que pertenecen.
candidatoA$candidate <- "A"
candidatoB$candidate <- "B"
candidatoC$candidate <- "C"
Aquí se combinan los tres conjuntos de datos en uno solo utilizando la función rbind(), que combina los conjuntos de datos por filas.
data <- rbind(candidatoA, candidatoB, candidatoC)
Esta línea guarda el conjunto de datos combinado en un archivo CSV llamado “datos_combinados.csv” en el directorio de trabajo actual. La opción row.names = FALSE evita que se incluyan los números de fila en el archivo CSV.
write.csv(data, "datos_combinados.csv", row.names = FALSE)
Aquí se convierte el dataframe combinado a un formato largo utilizando la función melt() de la librería reshape2. Esto es útil para trabajar con los datos en un formato más adecuado para ciertos tipos de análisis y visualizaciones.
data_long <- melt(data, id.vars = "candidate", measure.vars = c("likes", "comments", "shares"))
se crea una gráfica de barras que compara los likes, comentarios y compartidos de cada candidato. La función ggplot() de la librería ggplot2 se utiliza para inicializar el gráfico, y luego se agregan capas geométricas (geom_bar()) para representar los datos como barras. Las etiquetas del eje x, y y de la leyenda se personalizan con labs(), y se aplica un tema minimalista con theme_minimal().
ggplot(data_long, aes(x = candidate, y = value, fill = variable)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Comparación de Likes, Comentarios y Compartidos",
x = "Candidatos",
y = "Cantidad",
fill = "Métrica") +
theme_minimal()
En esta sección, se convierte la columna “time” de cada conjunto de datos en formato de fecha y hora utilizando la función as.POSIXct(). La cadena de formato “%Y-%m-%d %H:%M:%S” especifica que la columna debe interpretarse como año-mes-día hora:minuto
# este formato no es el bueno es el que sigue ya que no me hacepto el otro Rmarkdown
candidatoA$time <- as.POSIXct(candidatoA$time, origin = "1970-01-01", tz = "UTC")
candidatoB$time <- as.POSIXct(candidatoB$time, origin = "1970-01-01", tz = "UTC")
candidatoC$time <- as.POSIXct(candidatoC$time, origin = "1970-01-01", tz = "UTC")
## este es el codigo bueno para Convertir la columna "time" a formato de fecha y hora
#candidatoA$time <- as.POSIXct(candidatoA$time, format = "%Y-%m-%d %H:%M:%S")
#candidatoB$time <- as.POSIXct(candidatoB$time, format = "%Y-%m-%d %H:%M:%S")
#candidatoC$time <- as.POSIXct(candidatoC$time, format = "%Y-%m-%d %H:%M:%S")
Aquí se extrae la hora de la columna “time” de cada conjunto de datos utilizando la función format(). Esto se hace para poder visualizar y analizar los datos de likes, comentarios y compartidos por hora en las siguientes gráficas.
candidatoA$hora <- format(candidatoA$time, "%H:%M")
candidatoB$hora <- format(candidatoB$time, "%H:%M")
candidatoC$hora <- format(candidatoC$time, "%H:%M")
Estas secciones generan gráficas de dispersión para cada candidato, mostrando la cantidad de likes por hora. Se utiliza geom_point() para representar los datos como puntos en el gráfico. El color de los puntos y el título del gráfico se personalizan según el candidato.
ggplot(candidatoA, aes(x = hora, y = likes)) +
geom_point(color = "blue") +
labs(title = "Likes por hora - Candidato A",
x = "Hora",
y = "Likes") +
theme_minimal()
ggplot(candidatoB, aes(x = hora, y = likes)) +
geom_point(color = "red") +
labs(title = "Likes por hora - Candidato B",
x = "Hora",
y = "Likes") +
theme_minimal()
ggplot(candidatoC, aes(x = hora, y = likes)) +
geom_point(color = "green") +
labs(title = "Likes por hora - Candidato C",
x = "Hora",
y = "Likes") +
theme_minimal()
ggplot(candidatoA, aes(x = hora, y = shares)) +
geom_point(color = "blue") +
labs(title = "Compartidos por hora - Candidato A",
x = "Hora",
y = "Compartidos") +
theme_minimal()
ggplot(candidatoB, aes(x = hora, y = shares)) +
geom_point(color = "red") +
labs(title = "Compartidos por hora - Candidato B",
x = "Hora",
y = "Compartidos") +
theme_minimal()
ggplot(candidatoC, aes(x = hora, y = shares)) +
geom_point(color = "green") +
labs(title = "Compartidos por hora - Candidato C",
x = "Hora",
y = "Compartidos") +
theme_minimal()
ggplot(candidatoA, aes(x = hora, y = comments)) +
geom_point(color = "blue") +
labs(title = "Comentarios por hora - Candidato A",
x = "Hora",
y = "Comentarios") +
theme_minimal()
ggplot(candidatoB, aes(x = hora, y = comments)) +
geom_point(color = "red") +
labs(title = "Comentarios por hora - Candidato B",
x = "Hora",
y = "Comentarios") +
theme_minimal()
ggplot(candidatoC, aes(x = hora, y = comments)) +
geom_point(color = "green") +
labs(title = "Comentarios por hora - Candidato C",
x = "Hora",
y = "Comentarios") +
theme_minimal()
## Crear gráficas de barras de likes, compartidos y comentarios por hora
para cada candidato: Estas secciones generan gráficas de barras para
cada candidato, mostrando la cantidad de likes por hora. Se utiliza
geom_bar() para representar los datos como barras en el gráfico. El
color de las barras y el título del gráfico se personalizan según el
candidato.
ggplot(candidatoA, aes(x = hora, y = comments)) +
geom_bar(stat = "identity", fill = "blue") +
labs(title = "Comentarios por hora - Candidato A",
x = "Hora",
y = "Comentarios") +
theme_minimal()
ggplot(candidatoB, aes(x = hora, y = comments)) +
geom_bar(stat = "identity", fill = "red") +
labs(title = "Comentarios por hora - Candidato B",
x = "Hora",
y = "Comentarios") +
theme_minimal()
ggplot(candidatoC, aes(x = hora, y = comments)) +
geom_bar(stat = "identity", fill = "green") +
labs(title = "Comentarios por hora - Candidato C",
x = "Hora",
y = "Comentarios") +
theme_minimal()
ggplot(candidatoA, aes(x = hora, y = likes)) +
geom_bar(stat = "identity", fill = "blue") +
labs(title = "Likes por hora - Candidato A",
x = "Hora",
y = "Likes") +
theme_minimal()
ggplot(candidatoB, aes(x = hora, y = likes)) +
geom_bar(stat = "identity", fill = "red") +
labs(title = "Likes por hora - Candidato B",
x = "Hora",
y = "Likes") +
theme_minimal()
ggplot(candidatoC, aes(x = hora, y = likes)) +
geom_bar(stat = "identity", fill = "green") +
labs(title = "Likes por hora - Candidato C",
x = "Hora",
y = "Likes") +
theme_minimal()
ggplot(candidatoA, aes(x = hora, y = shares)) +
geom_bar(stat = "identity", fill = "blue") +
labs(title = "Compartidas por hora - Candidato A",
x = "Hora",
y = "Compartidas") +
theme_minimal()
ggplot(candidatoB, aes(x = hora, y = shares)) +
geom_bar(stat = "identity", fill = "red") +
labs(title = "Compartidas por hora - Candidato B",
x = "Hora",
y = "Compartidas") +
theme_minimal()
ggplot(candidatoC, aes(x = hora, y = shares)) +
geom_bar(stat = "identity", fill = "green") +
labs(title = "Compartidas por hora - Candidato C",
x = "Hora",
y = "Compartidas") +
theme_minimal()