Resultados

Reproducciones

29,615,230

Likes

98,264,987

Comentarios

7,481,786

Comentarios Positivos

5,918,301

Comentarios Negativos

1,563,485

Medición de likes en porcentaje

Medición de dislikes en porcentaje

Base de Datos

Temas observados

Registros de la tabla videos

---
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()
```