This report analyzes the dataset
Music Streaming Services.csv, which focuses on analyzing
user behavior and satisfaction with different music streaming services
based on survey data. The dataset includes information about users’
preferred platforms, listening habits, and their satisfaction ratings.
Besides, the results provide insights into the strengths and weaknesses
of each service and highlight opportunities for improvement in the music
streaming industry.
library(readr)
library(dplyr)
library(ggplot2)
# 1. Load data
data <- read_csv("Music Streaming Services.csv")
# 2. Clean data
data <- data[-1, ]
colnames(data) <- make.names(colnames(data))
data <- data %>%
mutate(
Progress = as.numeric(Progress),
Q7 = as.numeric(Q7),
Q9 = as.numeric(Q9)
) %>%
filter(Finished == "TRUE", Progress == 100)
# 3. CHART 1: What types of music do you listen to the most?
ggplot(data, aes(x = Q1)) +
geom_bar(fill = "purple") +
labs(title = "Top Music Genres",
x = "Music Genres",
y = "Number of Users") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# 4. CHART 2: Music Streaming Platforms
ggplot(data, aes(x = Q2)) +
geom_bar(fill = "green") +
labs(title = "Music Streaming Platforms",
x = "Music Platforms",
y = "Number of Users")
# 5. CHART 3: Type of Subscription
ggplot(data, aes(x = Q6)) +
geom_bar(fill = "blue") +
labs(title = "Type of Subscription",
x = "Subscription Type",
y = "Number of Users")
# 6. CHART 4: Music Streaming Usage Frequency
ggplot(data, aes(x = Q3)) +
geom_bar(fill = "orange") +
labs(title = "Music Streaming Usage Frequency",
x = "Frequency Range",
y = "Number of Users")
# 7. CHART 5: Willingness to Pay for Music Streaming
library(dplyr)
library(ggplot2)
# Data Prepare
pie_data <- data %>%
count(Q15) %>%
mutate(
percentage = round(n / sum(n) * 100, 1),
label = paste0(Q15, " (", percentage, "%)")
)
# Draw pie chart
ggplot(pie_data, aes(x = "", y = n, fill = Q15)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
geom_text(aes(label = label),
position = position_stack(vjust = 0.5),
size = 4) +
labs(
title = "Willingness to Pay for Music Streaming",
fill = "Price Range per Month"
) +
theme_void() +
scale_fill_brewer(palette = "Set3")
# 8. CHART 6: Recommendation Score by Platforms/Services
ggplot(data, aes(x = Q2, y = Q9, fill = Q2)) +
geom_boxplot() +
scale_fill_brewer(palette = "Set2") +
labs(
title = "Recommendation Score by Platform",
x = "Music Platform",
y = "Recommendation Score"
) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))