Claro, aquí tienes un resumen:
plotly: Para crear gráficos interactivos en R (con zoom, desplazamiento, etc.).
ggplot2: Para crear gráficos estáticos de alta calidad usando la “gramática de los gráficos”.
readr: Para leer y escribir archivos de datos (como CSV) de forma eficiente.
Analizar el rendimiento de los videos publicados en la red social TikTok, utilizando herramientas de visualización con R, específicamente ggplot2 y plotly.
tiktok <- read_csv("~/Trabajos R/practicas u4/tiktok.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.
# Limpieza de datos
tiktok <- tiktok %>%
filter(!is.na(video_view_count), !is.na(video_like_count), !is.na(video_duration_sec))
# Conversión a numérico
tiktok <- tiktok %>%
mutate(across(
c(video_view_count, video_like_count, video_share_count,
video_comment_count, video_download_count),
~ as.numeric(gsub(",", "", .))
))
## Warning: There were 5 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `across(...)`.
## Caused by warning:
## ! NAs introducidos por coerción
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 4 remaining warnings.
# Calcular tasa de engagement
tiktok <- tiktok %>%
mutate(engagement_rate = (video_like_count + video_share_count + video_comment_count) / video_view_count)
p1 <- plot_ly(tiktok,
x = ~video_view_count,
y = ~video_like_count,
type = 'scatter',
mode = 'markers',
marker = list(color = '#1f77b4', opacity = 0.5),
text = ~paste("Vistas:", video_view_count, "<br>Likes:", video_like_count),
hoverinfo = 'text') %>%
layout(title = "Relación entre Reproducciones y Likes",
xaxis = list(title = "Reproducciones"),
yaxis = list(title = "Likes"))
p1
## Warning: Ignoring 298 observations
Explicación:
Este gráfico interactivo permite a los usuarios pasar el cursor sobre
los puntos para ver el número exacto de vistas y likes. Pueden hacer
zoom o desplazarse para explorar mejor la relación entre estas métricas.
La tendencia general muestra que más vistas suelen correlacionarse con
más likes, pero la interactividad ayuda a identificar valores
atípicos.
p2 <- plot_ly(tiktok,
x = ~video_duration_sec,
y = ~engagement_rate,
type = 'scatter',
mode = 'markers',
marker = list(color = '#2ca02c', opacity = 0.5),
text = ~paste("Duración (seg):", video_duration_sec, "<br>Engagement:", round(engagement_rate, 4)),
hoverinfo = 'text') %>%
layout(title = "Duración del Video vs Tasa de Engagement",
xaxis = list(title = "Duración (seg)"),
yaxis = list(title = "Engagement Rate"))
p2
## Warning: Ignoring 298 observations
Explicación:
Con este gráfico interactivo, los usuarios pueden explorar cómo la
duración del video afecta la tasa de engagement. Al pasar el cursor, se
muestran los valores exactos de duración y engagement, lo que facilita
identificar si los videos más largos efectivamente generan más
interacción.
likes_por_verificado <- tiktok %>%
group_by(verified_status) %>%
summarise(prom_likes = mean(video_like_count, na.rm = TRUE))
p3 <- plot_ly(likes_por_verificado,
x = ~verified_status,
y = ~prom_likes,
type = 'bar',
marker = list(color = c('#1f77b4', '#ff7f0e')),
text = ~paste("Likes promedio:", round(prom_likes, 2)),
hoverinfo = 'text') %>%
layout(title = "Promedio de Likes por Estado de Verificación",
xaxis = list(title = "Verificado"),
yaxis = list(title = "Likes Promedio"))
p3
Explicación:
Este gráfico de barras interactivo muestra el promedio de likes para
cuentas verificadas y no verificadas. Al pasar el cursor, los usuarios
ven los valores exactos de likes promedio, lo que refuerza la
observación de que las cuentas verificadas tienden a obtener más likes.
—
p4 <- plot_ly(tiktok,
x = ~video_view_count,
y = ~video_comment_count,
type = 'scatter',
mode = 'markers',
marker = list(color = '#ff7f0e', opacity = 0.5),
text = ~paste("Vistas:", video_view_count, "<br>Comentarios:", video_comment_count),
hoverinfo = 'text') %>%
layout(title = "Relación entre Reproducciones y Comentarios",
xaxis = list(title = "Reproducciones"),
yaxis = list(title = "Comentarios"))
p4
## Warning: Ignoring 298 observations
Explicación:
Este gráfico interactivo permite explorar la relación entre vistas y
comentarios. La interactividad ayuda a identificar videos con muchas
vistas pero pocos comentarios, lo que puede indicar diferencias en el
tipo de contenido o audiencia.
Los datos indican que tanto la duración de los videos como el estado de la cuenta (verificada o no) tienen cierta influencia en el rendimiento del contenido. Los videos más largos tienden a generar más engagement, y las cuentas verificadas obtienen en promedio más likes. Este análisis demuestra el valor de las herramientas gráficas en R para explorar datos de redes sociales.