Este conjunto de datos contiene 100 filas de canciones favoritas simuladas, incluyendo información como el título de la canción, artista, género, año de lanzamiento, duración en minutos, la plataforma donde se escuchó la canción y la fecha de escucha.### Columnas:- Título_Canción: Nombre de la canción- Artista: Artista o grupo que interpreta la canción- Género: Género musical (Pop, Rock, Indie, etc.)- Año_Lanzamiento: Año en que la canción fue originalmente lanzada- Duración_Minutos: Duración de la canción en minutos- Fecha_Escucha: La fecha en que el usuario escuchó la canción- Plataforma: Plataforma utilizada para escuchar (Spotify, YouTube, etc.)### Propósito:Este conjunto de datos es útil para probar sistemas de recomendación musical, visualización de datos, análisis personal o práctica de aprendizaje automático. Todos los datos son ficticios y generados programáticamente.Licencia: CC BY 4.0 — Siéntase libre de usar, remixar o analizar, pero por favor atribuya al autor original.
knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
#Funciones en R #‘Calcula la media aritmética de un vector #’@param x Vector numérico de valores #’@return media aritmética
media_aritmetica<- function(x)
{
return (sum(x)/length(x))
}
#Calcula la media ponderada de un vector #‘@param x Vector numérico de valores #’@param y Vector numérico de pesos #’@return media ponderada
media_pond<- function(x,y)
{
sum(x*y) / sum(y)
}
#Calcula la varianza de un vector #‘@param c Vector numérico de valores #’@return valor de varianza
f_mi_varianza <- function (c){
return <- ( ((sum((c - media_aritmetica(c))^2))) /((length(c) - 1) ) )
}
#Calcula la desviación estándar de un vector #‘@param c Vector numérico de valores #’@return valor de desviación estándar
f_desv_estan <- function(c){
return (f_mi_varianza(c))^0.5
}
#Calcula la suma de un vector #‘@param x Vector numérico de valores #’@param quitar_na variable tipo boolean
mi_suma<- function(x,quitar_na=TRUE) {
if (quitar_na) {
x<- na.omit(x)
}
return(sum(x))
}
#Leemos los datos desde un archivo en formato separado por comas #CSV, caso de estudio de música favorita #Con las siguientes columnas titulo, artista, genero, anio, duracion, fecha, plataforma
datos<- read.csv("C:/Users/CEC/Documents/Rlasluisa/Lenguaje R/favormusic.csv")
print(datos)
## Song_Title Artist Genre Release_Year
## 1 Faded Alan Walker Electronic 2024
## 2 Blinding Lights The Weeknd Synth-pop 2018
## 3 Faded Alan Walker Electronic 2024
## 4 Faded Alan Walker Electronic 2012
## 5 Bohemian Rhapsody Queen Rock 2023
## 6 Perfect Ed Sheeran Pop Ballad 2014
## 7 Let Her Go Passenger Indie 2020
## 8 Blinding Lights The Weeknd Synth-pop 2011
## 9 Let Her Go Passenger Indie 2016
## 10 Bohemian Rhapsody Queen Rock 2015
## 11 Havana Camila Cabello Latin Pop 2018
## 12 Photograph Ed Sheeran Pop 2014
## 13 Perfect Ed Sheeran Pop Ballad 2010
## 14 Levitating Dua Lipa Pop 2023
## 15 Perfect Ed Sheeran Pop Ballad 2021
## 16 Photograph Ed Sheeran Pop 2013
## 17 Senorita Shawn Mendes & Camila Cabello Latin Pop 2012
## 18 Perfect Ed Sheeran Pop Ballad 2018
## 19 Havana Camila Cabello Latin Pop 2017
## 20 Havana Camila Cabello Latin Pop 2022
## 21 Counting Stars OneRepublic Pop Rock 2016
## 22 Photograph Ed Sheeran Pop 2021
## 23 Someone Like You Adele Soul 2011
## 24 Stay The Kid LAROI & Justin Bieber Pop 2020
## 25 See You Again Wiz Khalifa ft. Charlie Puth Hip Hop 2024
## 26 Let Her Go Passenger Indie 2023
## 27 Blinding Lights The Weeknd Synth-pop 2018
## 28 Sunflower Post Malone & Swae Lee Hip Hop 2021
## 29 Sunflower Post Malone & Swae Lee Hip Hop 2021
## 30 Lovely Billie Eilish & Khalid Indie 2018
## 31 See You Again Wiz Khalifa ft. Charlie Puth Hip Hop 2020
## 32 Someone Like You Adele Soul 2022
## 33 Bohemian Rhapsody Queen Rock 2024
## 34 Sunflower Post Malone & Swae Lee Hip Hop 2023
## 35 Faded Alan Walker Electronic 2020
## 36 Perfect Ed Sheeran Pop Ballad 2015
## 37 Shape of You Ed Sheeran Pop 2024
## 38 Dance Monkey Tones and I Alternative 2010
## 39 Bad Guy Billie Eilish Electropop 2016
## 40 Senorita Shawn Mendes & Camila Cabello Latin Pop 2020
## 41 Faded Alan Walker Electronic 2019
## 42 See You Again Wiz Khalifa ft. Charlie Puth Hip Hop 2021
## 43 Faded Alan Walker Electronic 2015
## 44 Shape of You Ed Sheeran Pop 2013
## 45 Bad Guy Billie Eilish Electropop 2017
## 46 Levitating Dua Lipa Pop 2021
## 47 Dance Monkey Tones and I Alternative 2022
## 48 Senorita Shawn Mendes & Camila Cabello Latin Pop 2019
## 49 Someone Like You Adele Soul 2010
## 50 Stay The Kid LAROI & Justin Bieber Pop 2016
## 51 Senorita Shawn Mendes & Camila Cabello Latin Pop 2012
## 52 Levitating Dua Lipa Pop 2013
## 53 Someone Like You Adele Soul 2024
## 54 Peaches Justin Bieber R&B 2016
## 55 Photograph Ed Sheeran Pop 2024
## 56 Lovely Billie Eilish & Khalid Indie 2014
## 57 Havana Camila Cabello Latin Pop 2013
## 58 Let Her Go Passenger Indie 2015
## 59 Senorita Shawn Mendes & Camila Cabello Latin Pop 2010
## 60 Dance Monkey Tones and I Alternative 2017
## 61 Faded Alan Walker Electronic 2012
## 62 Peaches Justin Bieber R&B 2011
## 63 Stay The Kid LAROI & Justin Bieber Pop 2017
## 64 Faded Alan Walker Electronic 2020
## 65 Counting Stars OneRepublic Pop Rock 2015
## 66 Stay The Kid LAROI & Justin Bieber Pop 2020
## 67 Blinding Lights The Weeknd Synth-pop 2024
## 68 Blinding Lights The Weeknd Synth-pop 2020
## 69 Peaches Justin Bieber R&B 2013
## 70 Peaches Justin Bieber R&B 2016
## 71 Stay The Kid LAROI & Justin Bieber Pop 2020
## 72 Bad Guy Billie Eilish Electropop 2012
## 73 Perfect Ed Sheeran Pop Ballad 2012
## 74 Faded Alan Walker Electronic 2020
## 75 Dance Monkey Tones and I Alternative 2015
## 76 Believer Imagine Dragons Rock 2019
## 77 Let Her Go Passenger Indie 2012
## 78 Stay The Kid LAROI & Justin Bieber Pop 2017
## 79 Perfect Ed Sheeran Pop Ballad 2015
## 80 Blinding Lights The Weeknd Synth-pop 2012
## 81 Lovely Billie Eilish & Khalid Indie 2024
## 82 Stay The Kid LAROI & Justin Bieber Pop 2010
## 83 Bad Guy Billie Eilish Electropop 2015
## 84 Photograph Ed Sheeran Pop 2017
## 85 Blinding Lights The Weeknd Synth-pop 2020
## 86 Sunflower Post Malone & Swae Lee Hip Hop 2022
## 87 Let Her Go Passenger Indie 2023
## 88 Photograph Ed Sheeran Pop 2021
## 89 Believer Imagine Dragons Rock 2012
## 90 Levitating Dua Lipa Pop 2010
## 91 See You Again Wiz Khalifa ft. Charlie Puth Hip Hop 2023
## 92 Blinding Lights The Weeknd Synth-pop 2016
## 93 Someone Like You Adele Soul 2020
## 94 Dance Monkey Tones and I Alternative 2013
## 95 Bad Guy Billie Eilish Electropop 2017
## 96 Counting Stars OneRepublic Pop Rock 2013
## 97 Senorita Shawn Mendes & Camila Cabello Latin Pop 2024
## 98 Counting Stars OneRepublic Pop Rock 2010
## 99 Blinding Lights The Weeknd Synth-pop 2012
## 100 Let Her Go Passenger Indie 2013
## Duration_Minutes Listened_Date Platform
## 1 4.02 2024-02-10 Apple Music
## 2 4.45 2024-05-30 Zing MP3
## 3 4.86 2024-05-07 Zing MP3
## 4 4.92 2024-03-19 YouTube
## 5 3.90 2024-01-16 Apple Music
## 6 4.65 2024-01-24 Apple Music
## 7 3.39 2024-03-03 Spotify
## 8 2.67 2024-06-05 YouTube
## 9 4.05 2024-06-26 YouTube
## 10 3.98 2024-02-10 Spotify
## 11 4.01 2024-04-02 Spotify
## 12 4.24 2024-03-24 Apple Music
## 13 3.01 2024-05-19 Spotify
## 14 3.25 2024-01-20 Spotify
## 15 2.88 2024-01-22 Zing MP3
## 16 4.79 2024-02-20 Spotify
## 17 3.07 2024-06-08 Zing MP3
## 18 2.83 2024-02-25 Spotify
## 19 4.05 2024-04-21 Zing MP3
## 20 3.47 2024-04-22 YouTube
## 21 4.26 2024-05-09 Apple Music
## 22 3.34 2024-05-17 Zing MP3
## 23 2.71 2024-06-16 Spotify
## 24 3.49 2024-03-09 Apple Music
## 25 4.07 2024-02-25 Apple Music
## 26 3.10 2024-05-20 YouTube
## 27 3.67 2024-06-02 Zing MP3
## 28 4.64 2024-01-08 Spotify
## 29 3.26 2024-03-04 Apple Music
## 30 4.82 2024-02-26 Apple Music
## 31 4.66 2024-03-16 Apple Music
## 32 4.35 2024-01-14 Spotify
## 33 4.89 2024-01-01 YouTube
## 34 3.83 2024-04-21 Apple Music
## 35 2.89 2024-06-09 YouTube
## 36 4.16 2024-04-21 Apple Music
## 37 3.16 2024-01-15 Spotify
## 38 4.33 2024-02-23 YouTube
## 39 3.15 2024-02-02 Apple Music
## 40 2.70 2024-01-27 Spotify
## 41 3.69 2024-06-10 Zing MP3
## 42 2.70 2024-01-08 Apple Music
## 43 2.55 2024-01-11 Zing MP3
## 44 3.19 2024-03-18 Apple Music
## 45 3.38 2024-03-06 YouTube
## 46 4.59 2024-02-28 YouTube
## 47 3.76 2024-03-09 YouTube
## 48 4.37 2024-04-08 Spotify
## 49 2.75 2024-02-15 Apple Music
## 50 2.54 2024-01-10 Spotify
## 51 3.39 2024-05-10 Spotify
## 52 4.03 2024-02-01 Zing MP3
## 53 4.70 2024-04-01 Spotify
## 54 4.93 2024-03-03 Apple Music
## 55 4.39 2024-05-06 Spotify
## 56 2.97 2024-03-08 Spotify
## 57 3.06 2024-06-09 Apple Music
## 58 3.61 2024-02-08 Zing MP3
## 59 4.37 2024-04-03 YouTube
## 60 3.21 2024-01-21 YouTube
## 61 2.89 2024-01-07 YouTube
## 62 4.34 2024-06-06 Apple Music
## 63 4.32 2024-02-09 Spotify
## 64 4.42 2024-03-09 Apple Music
## 65 4.38 2024-04-13 YouTube
## 66 3.76 2024-02-28 Apple Music
## 67 3.24 2024-04-21 Spotify
## 68 2.65 2024-05-25 Zing MP3
## 69 4.25 2024-02-23 YouTube
## 70 4.69 2024-05-09 YouTube
## 71 3.26 2024-01-16 Spotify
## 72 2.70 2024-03-13 YouTube
## 73 2.79 2024-05-26 Zing MP3
## 74 3.85 2024-05-16 Apple Music
## 75 2.87 2024-04-10 YouTube
## 76 4.28 2024-05-19 Spotify
## 77 4.59 2024-05-20 YouTube
## 78 3.08 2024-06-11 YouTube
## 79 3.54 2024-06-29 YouTube
## 80 4.99 2024-04-09 Spotify
## 81 2.74 2024-05-08 YouTube
## 82 4.75 2024-05-29 Zing MP3
## 83 4.72 2024-01-07 Apple Music
## 84 4.43 2024-06-12 Spotify
## 85 4.81 2024-04-17 Apple Music
## 86 3.43 2024-06-26 YouTube
## 87 4.20 2024-02-16 Apple Music
## 88 2.73 2024-06-29 Apple Music
## 89 2.92 2024-03-24 Apple Music
## 90 4.86 2024-01-27 Zing MP3
## 91 2.69 2024-02-06 Spotify
## 92 4.90 2024-02-21 Spotify
## 93 3.14 2024-05-02 Spotify
## 94 4.76 2024-02-20 Spotify
## 95 4.23 2024-04-30 Apple Music
## 96 3.40 2024-05-30 Spotify
## 97 2.75 2024-06-11 Apple Music
## 98 3.57 2024-01-03 Zing MP3
## 99 4.04 2024-06-13 Apple Music
## 100 4.61 2024-01-04 Apple Music
library(ggplot2)
df_music<- datos
titulo<- df_music$Song_Title
artista<- df_music$Artist
genero<- df_music$Genre
anio<- df_music$Release_Year
duracion<- df_music$Duration_Minutes
fecha<- df_music$Listened_Date
plataforma<- df_music$Platform
mi_media <- media_aritmetica(duracion)
mi_varianza <- f_mi_varianza(duracion)
mi_desv_estandar <- f_desv_estan(duracion)
mi_suma <- mi_suma(duracion, quitar_na = TRUE)
mi_min <- min(duracion, na.rm = TRUE)
mi_max <- max(duracion, na.rm = TRUE)
mi_mediana <- median(duracion, na.rm = TRUE)
mi_cuartiles <- quantile(duracion, na.rm = TRUE)
cat("Resumen estadístico personalizado de la duración de canciones (en minutos):\n")
## Resumen estadístico personalizado de la duración de canciones (en minutos):
cat("--------------------------------------------------------------------------\n")
## --------------------------------------------------------------------------
cat("Mínimo: ", mi_min, "\n")
## Mínimo: 2.54
cat("1er Cuartil (25%): ", mi_cuartiles[2], "\n")
## 1er Cuartil (25%): 3.095
cat("Mediana: ", mi_mediana, "\n")
## Mediana: 3.795
cat("Media (aritmética): ", mi_media, "\n")
## Media (aritmética): 3.7672
cat("Varianza: ", mi_varianza, "\n")
## Varianza: 0.5625577
cat("Desviación estándar: ", mi_desv_estandar, "\n")
## Desviación estándar: 0.5625577
cat("3er Cuartil (75%): ", mi_cuartiles[4], "\n")
## 3er Cuartil (75%): 4.3825
cat("Máximo: ", mi_max, "\n")
## Máximo: 4.99
cat("Suma total: ", mi_suma, "\n")
## Suma total: 376.72
#Histograma duración
hist(duracion, breaks = 10, col = "skyblue", main = "Histograma de duración", xlab = "Duración (min)")
hist(df_music$Duration_Minutes,
breaks = 15,
col = "lightblue",
main = "Duración de canciones",
xlab = "Minutos")
curve(dnorm(x, mean(df_music$Duration_Minutes),
sd(df_music$Duration_Minutes)),
col = "red", lwd = 2, add = TRUE)
# Análisis por género: duración promedio y número de canciones por
género usando summary # Nos muestra para cada género musical (Genre): #
La duración promedio de las canciones (Promedio_Duracion). # La cantidad
total de canciones de ese género (Numero_Canciones). # Ordena los
resultados de mayor a menor según la duración promedio.
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
genero_resumen <- df_music %>%
group_by(Genre) %>%
summarise(
Promedio_Duracion = mean(Duration_Minutes, na.rm = TRUE),
Numero_Canciones = n()
) %>%
arrange(desc(Promedio_Duracion))
print(genero_resumen)
## # A tibble: 13 × 3
## Genre Promedio_Duracion Numero_Canciones
## <chr> <dbl> <int>
## 1 R&B 4.55 4
## 2 Rock 3.99 5
## 3 Synth-pop 3.94 9
## 4 Pop Rock 3.90 4
## 5 Indie 3.81 10
## 6 Pop 3.8 19
## 7 Electronic 3.79 9
## 8 Alternative 3.79 5
## 9 Hip Hop 3.66 8
## 10 Electropop 3.64 5
## 11 Soul 3.53 5
## 12 Latin Pop 3.52 10
## 13 Pop Ballad 3.41 7
ggplot(genero_resumen, aes(x = reorder(Genre, -Promedio_Duracion), y = Promedio_Duracion)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(title = "Duración Promedio por Género", x = "Género", y = "Minutos") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# Análisis por año de lanzamiento: número de canciones y duración
promedio por año
anio_resumen <- df_music %>%
group_by(Release_Year) %>%
summarise(
Promedio_Duracion = mean(Duration_Minutes, na.rm = TRUE),
Numero_Canciones = n()
) %>%
arrange(Release_Year)
print(anio_resumen)
## # A tibble: 15 × 3
## Release_Year Promedio_Duracion Numero_Canciones
## <int> <dbl> <int>
## 1 2010 3.95 7
## 2 2011 3.24 3
## 3 2012 3.63 10
## 4 2013 4.01 8
## 5 2014 3.95 3
## 6 2015 3.73 8
## 7 2016 4.07 7
## 8 2017 3.81 7
## 9 2018 3.96 5
## 10 2019 4.11 3
## 11 2020 3.58 12
## 12 2021 3.45 7
## 13 2022 3.75 4
## 14 2023 3.50 6
## 15 2024 3.88 10
ggplot(anio_resumen, aes(x = Release_Year, y = Numero_Canciones)) +
geom_line(group = 1, color = "darkgreen") +
geom_point(color = "darkgreen") +
labs(title = "Número de Canciones por Año", x = "Año de Lanzamiento", y = "Cantidad")
# Gráfico: duración promedio por año
ggplot(anio_resumen, aes(x = Release_Year, y = Promedio_Duracion)) +
geom_line(group = 1, color = "purple") +
geom_point(color = "purple") +
labs(title = "Duración Promedio por Año", x = "Año de Lanzamiento", y = "Minutos")