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

Aplicar funciones personalizadas sobre la duración

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

Gráfico: duración promedio por género

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

Gráfico: número de canciones por año

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")