1. Carga y Limpieza Básica de los Datos

# Cargar datos desde archivo CSV
datos <- read.csv("tiktok_dataset.csv")

# Visualizar las primeras filas
head(datos)
##   X. claim_status   video_id video_duration_sec
## 1  1        claim 7017666017                 59
## 2  2        claim 4014381136                 32
## 3  3        claim 9859838091                 31
## 4  4        claim 1866847991                 25
## 5  5        claim 7105231098                 19
## 6  6        claim 8972200955                 35
##                                                                                                                    video_transcription_text
## 1                                         someone shared with me that drone deliveries are already happening and will become common by 2025
## 2                               someone shared with me that there are more microorganisms in one teaspoon of soil than people on the planet
## 3 someone shared with me that american industrialist andrew carnegie had a net worth of $475 million usd, worth over $300 billion usd today
## 4       someone shared with me that the metro of st. petersburg, with an average depth of hundred meters, is the deepest metro in the world
## 5          someone shared with me that the number of businesses allowing employees to bring pets to the workplace has grown by 6% worldwide
## 6           someone shared with me that gross domestic product (gdp) is the best financial indicator of a country's overall trade potential
##   verified_status author_ban_status video_view_count video_like_count
## 1    not verified      under review           343296            19425
## 2    not verified            active           140877            77355
## 3    not verified            active           902185            97690
## 4    not verified            active           437506           239954
## 5    not verified            active            56167            34987
## 6    not verified      under review           336647           175546
##   video_share_count video_download_count video_comment_count
## 1               241                    1                   0
## 2             19034                 1161                 684
## 3              2858                  833                 329
## 4             34812                 1234                 584
## 5              4110                  547                 152
## 6             62303                 4293                1857
# Reemplazar valores NA con 0 en las columnas numéricas
datos$video_view_count[is.na(datos$video_view_count)] <- 0
datos$video_like_count[is.na(datos$video_like_count)] <- 0
datos$video_share_count[is.na(datos$video_share_count)] <- 0
datos$video_download_count[is.na(datos$video_download_count)] <- 0
datos$video_comment_count[is.na(datos$video_comment_count)] <- 0

2. Visualizaciones Interactivas

2.1 Relación entre Vistas y Likes

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()
print(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.


2.2 Distribución de la Duración de Videos

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()
print(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.


2.3 Vistas Promedio por Estado de Verificación

# Calcular promedios
media_vistas <- aggregate(video_view_count ~ verified_status, data = datos, mean)
## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA
## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA
grafico3 <- ggplot(media_vistas, aes(x = verified_status, y = video_view_count, fill = verified_status)) +
  geom_bar(stat = "identity") +
  labs(title = "Promedio de Vistas por Estado de Verificación",
       x = "Estado de Verificación",
       y = "Promedio de Vistas") +
  theme_minimal()
print(ggplotly(grafico3))

Explicación:
Este gráfico de barras muestra el promedio de vistas que reciben los usuarios verificados frente a los no verificados. Permite observar si estar verificado está relacionado con mayor alcance.


2.4 Comentarios en función de la Duración

grafico4 <- ggplot(datos, aes(x = video_duration_sec, y = video_comment_count)) +
  geom_point(color = "purple", alpha = 0.6) +
  labs(title = "Comentarios en Relación a la Duración del Video",
       x = "Duración del Video (segundos)",
       y = "Número de Comentarios") +
  theme_minimal()
print(ggplotly(grafico4))

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.


3. Conclusió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.