library(readxl)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(corrplot)
## corrplot 0.92 loaded
library(ggplot2)
library(gtsummary)
library(gtable)
library(ISLR)
library(sjPlot)
## Install package "strengejacke" from GitHub (`devtools::install_github("strengejacke/strengejacke")`) to load all sj-packages at once!
library(psych)
##
## Attaching package: 'psych'
##
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
dataY <- read_excel("~/Documents/HAROLD/SERGIO ARBOLEDA/TOMA DE DS1/Talleres/youtube.xlsx")
head(dataY, 10)
1. Haga un procesamiento de los datos para identificar errores de digitación. En caso de encontrarlos corríjalos.
Rta:.
En la columna correspondiente a “Category” hay un error de digitacion (dice Entretainment) se cambio a Entertainment.
En la columna correspondiente a “Category” existen dos categorias que equivalen a la misma (Music y Musica) se cambio Musica por Music
2. Haga un procesamiento de los datos para identificar los datos faltantes. En caso de encontrarlos implemente una de las estrategias vistas en clase para manejarlos.
Rta:.
Las columnas correspondientes a “likes” y “Comments” contienen celdas vacias, ya que son variables numericas se corrigio y a las celdas vacias se les asigno el valor de cero (0).
3. Calcule estadísticas descriptivas para cada una de las variables. También, construya gráficos adecuados para analizar su comportamiento. Comente lo encontrado para cada una de ellas.
summary(dataY)
## duration height width frame_rate
## Min. : 241.0 Min. : 140.0 Min. : 96.0 Min. : 6.00
## 1st Qu.: 295.0 1st Qu.: 480.0 1st Qu.: 360.0 1st Qu.:25.00
## Median : 391.0 Median : 640.0 Median : 480.0 Median :29.97
## Mean : 623.2 Mean : 832.3 Mean : 527.2 Mean :27.01
## 3rd Qu.: 591.0 3rd Qu.:1280.0 3rd Qu.: 720.0 3rd Qu.:29.97
## Max. :25845.0 Max. :1920.0 Max. :1214.0 Max. :47.75
## category views likes comments
## Length:1533 Min. : 0 Min. : 0 Min. : 0.00
## Class :character 1st Qu.: 1880 1st Qu.: 7 1st Qu.: 0.00
## Mode :character Median : 5171 Median : 21 Median : 3.00
## Mean : 277555 Mean : 1327 Mean : 76.95
## 3rd Qu.: 21711 3rd Qu.: 102 3rd Qu.: 16.00
## Max. :160295630 Max. :836981 Max. :16634.00
describe(dataY)
ggplot(dataY, aes(x = duration)) +
geom_histogram(binwidth = 800, fill = "skyblue", color = "black") +
labs(title = "Distribución de duración de videos", x = "Duración (segundos)", y = "Frecuencia")
ggplot(dataY, aes(x = category, y = views)) +
geom_boxplot(fill = "orange") +
scale_y_log10() +
labs(title = "Vistas por categoría", x = "Categoría", y = "Vistas (escala log)")
## Warning in scale_y_log10(): log-10 transformation introduced infinite values.
## Warning: Removed 32 rows containing non-finite outside the scale range
## (`stat_boxplot()`).
ggplot(dataY, aes(x = duration, y = views)) +
geom_point(alpha = 0.5, color = "blue") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(title = "Duración vs Vistas", x = "Duración (segundos)", y = "Vistas")
## `geom_smooth()` using formula = 'y ~ x'
##Likes y vistas según categoría
ggplot(dataY, aes(x = views, y = likes, color = category)) +
geom_point(alpha = 0.6) +
scale_x_log10() + scale_y_log10() +
labs(title = "Likes vs Vistas por categoría", x = "Vistas (log)", y = "Likes (log)")
## Warning in scale_x_log10(): log-10 transformation introduced infinite values.
## Warning in scale_y_log10(): log-10 transformation introduced infinite values.
dataY %>% filter(likes != 0) %>%
count(category) %>%
ggplot(aes(x = reorder(category, n), y = n, fill = category)) +
geom_col() +
coord_flip() +
labs(title = "Videos sin likes por categoría", x = "Categoría", y = "Cantidad")
library(dplyr)
library(ggplot2)
dataY %>%
group_by(category) %>%
summarise(total_likes = sum(likes, na.rm = TRUE)) %>%
ggplot(aes(x = reorder(category, total_likes), y = total_likes, fill = category)) +
geom_col() +
coord_flip() +
labs(title = "Total de likes por categoría",
x = "Categoría",
y = "Total de likes") +
theme_minimal() + guides(fill = "none")