datos <- read_csv("tiktok_dataset.csv")
## Rows: 19382 Columns: 12
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (9): claim_status, video_transcription_text, verified_status, author_ban...
## dbl (3): #, video_id, video_duration_sec
##
## ℹ 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.
# Limitar a los primeros 1000 registros
datos <- datos[1:1000, ]
# Reemplazar valores NA con 0
cols_numericas <- c("video_view_count", "video_like_count", "video_share_count",
"video_download_count", "video_comment_count")
for (col in cols_numericas) {
datos[[col]][is.na(datos[[col]])] <- 0
}
head(datos)
## # A tibble: 6 × 12
## `#` claim_status video_id video_duration_sec video_transcription_text
## <dbl> <chr> <dbl> <dbl> <chr>
## 1 1 claim 7017666017 59 someone shared with me that …
## 2 2 claim 4014381136 32 someone shared with me that …
## 3 3 claim 9859838091 31 someone shared with me that …
## 4 4 claim 1866847991 25 someone shared with me that …
## 5 5 claim 7105231098 19 someone shared with me that …
## 6 6 claim 8972200955 35 someone shared with me that …
## # ℹ 7 more variables: verified_status <chr>, author_ban_status <chr>,
## # video_view_count <chr>, video_like_count <chr>, video_share_count <chr>,
## # video_download_count <chr>, video_comment_count <chr>
renderPlotly({
grafico1 <- ggplot(datos, aes(x = video_view_count, y = video_like_count)) +
geom_point(color = "blue", alpha = 0.6) +
labs(title = "Relación entre Vistas y Likes",
x = "Número de Vistas",
y = "Número de Likes") +
theme_minimal()
ggplotly(grafico1)
})
Explicación:
Este gráfico de dispersión muestra cómo los likes aumentan a medida que
un video tiene más vistas. Aunque no todos los videos con muchas vistas
tienen muchos likes, se observa una tendencia creciente.
renderPlotly({
grafico2 <- ggplot(datos, aes(x = video_duration_sec)) +
geom_histogram(fill = "orange", bins = 20) +
labs(title = "Distribución de Duración de Videos",
x = "Duración del Video (segundos)",
y = "Cantidad de Videos") +
theme_minimal()
ggplotly(grafico2)
})
Explicación:
Este histograma permite ver qué tan comunes son ciertas duraciones. La
mayoría de los videos parecen durar entre 15 y 60 segundos.
renderPlotly({
# Reemplazar NA con 0 en duración si es necesario
datos$video_duration_sec[is.na(datos$video_duration_sec)] <- 0
# Calcular duración promedio por estado de verificación
media_duracion <- aggregate(video_duration_sec ~ verified_status, data = datos, mean)
# Crear gráfico
grafico <- ggplot(media_duracion, aes(x = verified_status, y = video_duration_sec, fill = verified_status)) +
geom_col() +
labs(title = "Duración Promedio de Videos por Estado de Verificación",
x = "Estado de Verificación",
y = "Duración Promedio (segundos)") +
theme_minimal()
ggplotly(grafico)
})
Explicación:
Este gráfico analiza si los videos más largos generan más comentarios.
Se observa cierta dispersión, pero hay videos más largos que tienden a
recibir más interacción.
renderPlotly({
# Reemplazar NAs con 0 (opcional, pero previene errores)
datos$video_like_count[is.na(datos$video_like_count)] <- 0
datos$video_comment_count[is.na(datos$video_comment_count)] <- 0
datos$video_share_count[is.na(datos$video_share_count)] <- 0
# Calcular promedio de interacciones por estado de verificación
resumen <- aggregate(cbind(video_like_count, video_comment_count, video_share_count) ~ verified_status, data = datos, mean)
# Cambiar nombres de columnas para mayor claridad
colnames(resumen) <- c("Verificado", "Likes", "Comentarios", "Compartidos")
# Reorganizar a formato largo para gráfico apilado
library(reshape2)
resumen_melt <- melt(resumen, id.vars = "Verificado", variable.name = "Interacción", value.name = "Promedio")
# Crear gráfico
grafico <- ggplot(resumen_melt, aes(x = Verificado, y = Promedio, fill = Interacción)) +
geom_col(position = "stack") +
labs(title = "Interacciones Promedio por Estado de Verificación",
x = "Estado de Verificación",
y = "Promedio",
fill = "Tipo de Interacción") +
theme_minimal()
ggplotly(grafico)
})
Explicacion: Este gráfico apilado muestra cómo los usuarios verificados y no verificados generan interacciones promedio (likes, comentarios y compartidos). Permite visualizar si el estado de verificación influye en el nivel de interacción.
A través de visualizaciones simples pero efectivas, observamos cómo los videos más vistos tienden a tener más likes, cómo se distribuyen las duraciones de los videos, y el posible impacto del estado de verificación en la visibilidad. También exploramos cómo la duración puede relacionarse con los comentarios, aportando ideas útiles para creadores de contenido.