29,615,230
98,264,987
7,481,786
5,918,301
1,563,485
---
title: "Canal Data Science"
author: "Jhonatan Flores"
date: "`r Sys.Date()`"
output:
flexdashboard::flex_dashboard:
orientation: rows
logo: logo.jpg
vertical_layout: fill
theme: "yeti"
social: ["facebook","twitter","linkedin"]
source: embed
---
```{r setup, include=FALSE}
library(flexdashboard)
library(dplyr)
library(lubridate)
library(ggplot2)
library(tm)
library(wordcloud)
library(readr)
library(formattable)
```
```{r data, message=FALSE, warning=FALSE}
videos <- read_csv("academatica_videos.csv")
metadata <- read_csv("academatica_videos_metadata.csv")
stats <- read_csv("academatica_video_stats.csv")
```
```{r kpis}
metricas <- stats %>%
summarise(total_views = sum(viewCount),
total_likes = sum(likeCount),
total_dislike = sum(dislikeCount),
total_favorite = sum(favoriteCount),
total_comments = sum(commentCount))
```
sec_fija{.sidebar}
===============================
## **Proyecto: Análisis de canal**
La propuesta de investigación tiene como finalidad realizar el analisis del canal **Data Science** de manera profunda por lo que se considera necesario ***contrastar*** la linea de trabajo con los resultados mostrados para mejorar la interacción con el publico.
## **Objetivo**
Realizar los **cambios prioritarios** en el mas breve plazo para incrementar la audiencia por medio de la adhesion de nuevo publico desde yotube o desde otra plataforma, lo que representara en el plano economico mayores ***ingresos monetarios***, asi como tambien establecera la **fidelizacion** del antiguo suscriptor.
# Resultados {data-icon=fa-splotch}
##
### Reproducciones
```{r}
valueBox(formattable::comma(metricas$total_views,digits =0),icon = "fa-play",color = "#FFD700")
```
### Likes
```{r}
valueBox(formattable::comma(metricas$total_likes,digits =0),icon = "fa-thumbs-up",color = "green")
```
### Comentarios
```{r}
valueBox(formattable::comma(metricas$total_comments,digits = 0),icon = "fa-pencil",color = '#AB82FF')
```
##
### Comentarios Positivos
```{r}
comPo <- metricas$total_comments-1563485
# comPo <- round(comPo*100,0)
valueBox(formattable::comma(comPo,digits = 0),icon = "fa-grin",color = '#87CEFA')
```
### Comentarios Negativos
```{r}
comNe <- metricas$total_comments-5918301
# comPo <- round(comPo*100,0)
valueBox(formattable::comma(comNe,digits = 0),icon = "fa-grimace",color = '#FF4040')
```
##
### Medición de likes en porcentaje
```{r}
likes_rate <- metricas$total_likes/(metricas$total_likes+metricas$total_dislike)
likes_rate <- round(likes_rate*100,0)
gauge(likes_rate, min = 0, max = 100, symbol = '%', gaugeSectors(success = c(80,100), warning = c(40,79), danger = c(0,39)))
```
### Medición de dislikes en porcentaje
```{r}
dislikes_rate <- metricas$total_dislike/(metricas$total_likes+metricas$total_dislike)
dislikes_rate <- round(dislikes_rate*100,0)
gauge(dislikes_rate, min = 0, max = 100, symbol = '%', gaugeSectors(success = c(80,100), warning = c(40,79), danger = c(0,39)))
```
##
### {data-width=500}
```{r}
videos %>%
mutate(year = year(ymd_hms(contentDetails.videoPublishedAt)),
month = month(ymd_hms(contentDetails.videoPublishedAt),label = TRUE),
year = as.factor(year)) %>%
group_by(year, month) %>%
summarise(uploaded_videos = n_distinct(id)) %>%
ggplot(aes(x=month,
y=uploaded_videos,
fill=year))+
geom_col(position = 'stack')
```
### {data-width=500}
```{r}
videos %>%
mutate(year = year(ymd_hms(contentDetails.videoPublishedAt)),
month = month(ymd_hms(contentDetails.videoPublishedAt),label = TRUE),
year = as.factor(year)) %>%
group_by(year, month) %>%
summarise(uploaded_videos = n_distinct(id)) %>%
ggplot(aes(x=month,
y=uploaded_videos,
fill=year))+
geom_col(position = 'dodge')
```
# Base de Datos {data-icon="fa-database"}
##
### **Temas observados**
```{r}
# corps= archivos en un vector
docs <- Corpus(VectorSource(metadata$title))
# funcion= content_transformer edita el corpus
toSpace <- content_transformer(function (x , pattern ) gsub(pattern, " ", x))
# Limpiar.Remover caracteres "\\(", "-"
docs <- tm_map(docs, toSpace, "-")
docs <- tm_map(docs, toSpace, "\\(")
docs <- tm_map(docs, toSpace, "\\)")
docs <- tm_map(docs, toSpace, "\\|")
# Remover numeros, paralabras, puntuacion, espacios en blanco
docs <- tm_map(docs, content_transformer(tolower))
docs <- tm_map(docs, removeNumbers)
docs <- tm_map(docs, removeWords, stopwords("spanish"))
docs <- tm_map(docs, removeWords, stopwords("english"))
docs <- tm_map(docs, removeWords, c("video",
"problema",
"ejemplo",
"parte",
"ejercicio",
"ejercicios",
"ejemplos"))
docs <- tm_map(docs, removePunctuation)
docs <- tm_map(docs, stripWhitespace)
# Crear matriz dtm
dtm <- TermDocumentMatrix(docs)
m <- as.matrix(dtm)
v <- sort(rowSums(m),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
set.seed(1234)
wordcloud(words = d$word, freq = d$freq, min.freq = 1,
max.words=100, random.order=TRUE, rot.per=0.1,
colors=brewer.pal(8, "Dark2"))
```
### **Registros de la tabla videos**
```{r}
stats %>%
mutate(hasLike = if_else(likeCount>0,"si","no" )) %>%
filter(hasLike == 'no') %>%
left_join(metadata, by = c("id"="video_id")) %>%
select(id,title,description,link) %>%
DT::datatable()
```