Our group is exploring the factors that influence the success of K-dramas, specifically examining how variable such as release year, genre, tags, screenwriter, and duration impact ratings. We are looking to understand what contributes to a highly rated K-drama.
Previous studies show that factors like storytelling, production quality, and audience engagement affect K-drama ratings. Research on K-dramas suggests that trends change over time, and viewers are influenced by themes, the actors, and screenwriting.
The research question we are addressing is: What factors, such as release year, genre, tags, screenwriter, and duration, influence the success of a K-drama in terms of ratings? By analyzing a dataset of the top 250 K-dramas, we aim to identify patterns and relationships that contribute to higher ratings in K-dramas.
This study is important for production companies and streaming platforms looking to better understand audience preference to get higher K-drama ratings. By identifying key success factors, our findings could help guide decisions on script development, casting, production investments, ultimately to improve viewer satisfaction. Additionally, our research could serve as a valuable reference for new screenwriters and producers aiming to create a K-drama that aligns with audience expectations.
library(ggplot2)
library(dplyr)
library(tidyr)
library(stringr)
library(viridis)
kdrama <- read.csv("kdrama.csv")
# Number of Kdrama based on released year
kdrama %>%
ggplot(aes(x = factor(Year.of.release), fill = Year.of.release)) +
geom_bar() +
scale_fill_viridis_c() + # Adds a visually appealing color gradient
labs(
x = "Year",
y = "Number of K-Dramas"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1) # Rotate x-axis labels
)
Based on the graph create using our data set, we can observe a steady increase in the number of Korean dramas produced each year. For instance, in 2015, only 9 dramas were released, whereas in 2021, the number rose significantly to 39. This trend highlights the growing popularity and demand for Korean dramas over time.
# Ratings by Original Network
ggplot(kdrama, aes(x = reorder(Original.Network, Rating, median, na.rm = TRUE),
y = Rating, fill = Original.Network)) +
geom_boxplot(outlier.shape = NA, alpha = 0.7) + # Hide outliers for clarity
labs(
x = "Original Network",
y = "Rating"
) +
theme_minimal() +
theme(
legend.position = "none",
axis.text.x = element_text(angle = 60, hjust = 1)
) +
scale_fill_viridis_d()
This graph suggests that certain networks particulary the streaming platform Netflix tends to have higher-rated dramas on average. (recommend removing)
# Function to convert duration strings into total minutes
convert_to_minutes <- function(time) {
hours <- as.numeric(str_extract(time, "\\d+(?= hr)")) # Extract hours
minutes <- as.numeric(str_extract(time, "\\d+(?= min)")) # Extract minutes
hours[is.na(hours)] <- 0 # Replace NA when no hours present
minutes[is.na(minutes)] <- 0 # Replace NA when no minutes present
return(hours * 60 + minutes) # Convert to total minutes
}
# Convert the Duration column
kdrama <- kdrama %>%
mutate(Duration_Minutes = sapply(Duration, convert_to_minutes))
# Define 30-minute interval bins
breaks_seq <- seq(0, max(kdrama$Duration_Minutes, na.rm = TRUE) + 30, by = 30)
labels_seq <- paste0(head(breaks_seq, -1), "-", tail(breaks_seq, -1) - 1, " min")
# Assign bins
kdrama <- kdrama %>%
mutate(Time_Group = cut(Duration_Minutes,
breaks = breaks_seq,
labels = labels_seq,
right = FALSE))
# Compute mean rating per duration group
duration_summary <- kdrama %>%
group_by(Time_Group) %>%
summarise(Average_Rating = mean(Rating, na.rm = TRUE))
# Plot: Influence of Duration on K-Drama Ratings
ggplot(duration_summary, aes(x = Time_Group, y = Average_Rating, fill = Time_Group)) +
geom_col() + # Use geom_col() instead of geom_bar(stat = "identity")
scale_fill_viridis_d() + # Improved color scheme
labs(
x = "Duration Interval (minutes)",
y = "Average Rating"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 10), # Rotate x-axis labels
plot.title = element_text(hjust = 0.5, face = "bold", size = 14) # Center and bold title
)
Based off this graph you can see that longer episodes have the highest average rating and shorter episodes have the lowest average rating. Viewers seem to rate dramas with longer episodes more favorably. This suggest that more extended storytelling may enhance audience satisfaction.
genre_counts <- kdrama %>%
separate_rows(Genre, sep = ", ") %>%
mutate(Genre = str_trim(Genre)) %>% # Trim extra spaces
mutate(Genre = str_to_title(Genre)) %>% # Standardize capitalization
count(Genre, sort = TRUE) %>%
distinct(Genre, .keep_all = TRUE) %>% # Remove duplicates
slice_max(n, n = 10) # Select exactly the top 10 genres
ggplot(genre_counts, aes(x = reorder(Genre, n), y = n, color = Genre)) +
geom_point(size = 3) + # Using points instead of bars
geom_segment(aes(xend = Genre, yend = 0), color = "darkblue") + # Add lines from points to the x-axis
labs(
x = "Genre",
y = "Number of K-Dramas"
) +
theme_minimal() +
scale_color_viridis_d() +
theme(legend.position = "none", axis.text.x = element_text( ))
Based off this graph you can see that Drama and Romance are the most common dramas with the highest number of K-dramas. Viewers seem to like K-dramas that has romance and drama in it. Genres left of the graph are less focused on.
top_directors <- kdrama %>%
group_by(Director) %>%
summarise(Average_Rating = mean(Rating, na.rm = TRUE), Count = n()) %>%
filter(Count >= 3) %>% # Consider directors with at least 3 dramas
arrange(desc(Average_Rating)) %>%
head(10)
ggplot(top_directors, aes(x = reorder(Director, Average_Rating), y = Average_Rating, fill = Director)) +
geom_col() +
coord_flip() +
labs(
x = "Director",
y = "Average Rating"
) +
theme_minimal() +
scale_fill_viridis_d() +
theme(legend.position = "none")
Based of this graph you can see that the Director Shin Won Ho has the highest average rating of K-dramas. The reason for this could be that he creates a more emotionally engaging, nostalgic, and realistic drama that deeply resonates with the audience.
# Filter out the unwanted categories
filtered_kdrama <- kdrama %>%
filter(!is.na(Content.Rating) & Content.Rating != "G - All Ages")
# Create the violin plot without the removed categories
ggplot(filtered_kdrama, aes(x = Content.Rating, y = Rating, fill = Content.Rating)) +
geom_violin(trim = FALSE) +
labs(
x = "Content Rating",
y = "Rating"
) +
theme_minimal() +
scale_fill_viridis_d() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
rating_trend <- filtered_kdrama %>%
group_by(Year.of.release) %>%
summarise(Average_Rating = mean(Rating, na.rm = TRUE))
The violin plot visualizes the distribution of K-drama ratings across different content rating groups: 13+, 15+, and 18+. Dramas rated 13+ have a narrow rating range, mostly between 8.3 and 8.5, indicating consistent audience reception. 15+ dramas show slightly more variation, while 18+ dramas have the widest spread, with ratings ranging from 8.0 to above 9.0. This suggests that 18+ dramas receive mixed reviews, likely due to their niche appeal, whereas 13+ and 15+ dramas maintain more stable ratings due to their broader audience reach.
ggplot(rating_trend, aes(x = Year.of.release, y = Average_Rating)) +
geom_line(color = "red", size = 1) +
geom_point(color = "darkred", size = 2) +
labs(
title = "Average K-Drama Ratings Over the Years",
x = "Year",
y = "Average Rating"
) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))
Based off this graph, you can see that over the years K-dramas average ratings have increased slightly over the years after 2005. This shows that the production have K-dramas and popularity has increased over the years.
# Calculate the top screenwriters based on their average rating
top_screenwriters <- kdrama %>%
group_by(Screenwriter) %>%
summarise(Average_Rating = mean(Rating, na.rm = TRUE), Count = n()) %>%
filter(Count >= 3) %>% # Consider screenwriters with at least 3 dramas
arrange(desc(Average_Rating)) %>%
head(10)
# Scatter plot to represent the top screenwriters
ggplot(top_screenwriters, aes(x = reorder(Screenwriter, Average_Rating), y = Average_Rating, size = Count, color = Average_Rating)) +
geom_point() +
coord_flip() +
labs(
title = "",
x = "Screenwriter",
y = "Average Rating"
) +
theme_minimal() +
scale_color_viridis_c() +
theme(legend.position = "none")
The visualization highlights the top 10 screenwriters in the K-drama industry based on their average ratings. Among them, one screenwriter stands out with an average rating above 9.0, though the small dot size suggests they may have written fewer dramas. Notably, established writers such as Kim Eun Hee, Park Jae Bum, and the duo Kim Young Hyun & Park Sang Yeon have larger circles, indicating a substantial number of well-received works. The majority of top screenwriters have average ratings ranging from 8.6 to 8.9, reflecting consistent audience approval. Additionally, several screenwriters appear as part of a writing duo, such as Hong Jung Eun & Hong Mi Ran, which suggests that collaboration may contribute to producing high-quality content. These insights not only showcase the most successful screenwriters but also provide valuable information for networks, production companies, and aspiring writers aiming to create compelling and well-rated dramas.
In conclusion, our analysis of the top 250 K-dramas reveals several key factors that contribute to higher ratings. The growing number of K-dramas over the years, particularly after 2015, underscores the increasing popularity of this genre globally. Our findings show that longer episode durations tend to correlate with higher ratings, possibly due to the opportunity for more developed storytelling. Additionally, drama and romance genres dominate the K-drama landscape, attracting the most viewers. Notably, directors like Shin Won Ho and screenwriters such as Kim Eun Hee and the Hong sisters have consistently produced highly-rated dramas, highlighting the importance of experienced leadership in K-drama production. Content ratings also play a role in audience perception, with 13+ and 15+ dramas maintaining more stable ratings, while 18+ dramas show more variability due to their niche appeal. Overall, our study provides valuable insights for producers and content creators in understanding the elements that lead to K-drama success, from genre and duration to the influence of experienced directors and screenwriters.