appstore_games <- read.csv("appstore_games.csv")
colnames(appstore_games) <- make.names(colnames(appstore_games))
The dataset “Apple App Store Strategy Games” includes more than 17,000 strategy games listed on the App Store. It contains features such as game title, developer, user rating, number of reviews, price, size, and more. The source is Kaggle.
This dataset allows for market analysis and strategic decision-making by game developers and marketers.
Potential questions: - What features contribute to a high user rating? - Is there a relationship between price and popularity? - Which developers dominate the strategy games category?
Average.User.Rating: numeric (0–5), average user
ratingUser.Rating.Count: numeric, number of user reviewsPrice: numeric, price in USDAge.Rating: categorical, age restriction label (4+, 9+,
etc.)colnames(appstore_games)
## [1] "URL" "ID"
## [3] "Name" "Subtitle"
## [5] "Icon.URL" "Average.User.Rating"
## [7] "User.Rating.Count" "Price"
## [9] "In.app.Purchases" "Description"
## [11] "Developer" "Age.Rating"
## [13] "Languages" "Size"
## [15] "Primary.Genre" "Genres"
## [17] "Original.Release.Date" "Current.Version.Release.Date"
str(appstore_games)
## 'data.frame': 17007 obs. of 18 variables:
## $ URL : chr "https://apps.apple.com/us/app/sudoku/id284921427" "https://apps.apple.com/us/app/reversi/id284926400" "https://apps.apple.com/us/app/morocco/id284946595" "https://apps.apple.com/us/app/sudoku-free/id285755462" ...
## $ ID : int 284921427 284926400 284946595 285755462 285831220 286210009 286313771 286363959 286566987 286682679 ...
## $ Name : chr "Sudoku" "Reversi" "Morocco" "Sudoku (Free)" ...
## $ Subtitle : chr "" "" "" "" ...
## $ Icon.URL : chr "https://is2-ssl.mzstatic.com/image/thumb/Purple127/v4/7d/23/c6/7d23c660-aba8-308a-05c0-19385a377c0e/source/512x512bb.jpg" "https://is4-ssl.mzstatic.com/image/thumb/Purple128/v4/f7/e8/10/f7e810c8-72b4-cd85-e2d3-fbcb1e3ef381/source/512x512bb.jpg" "https://is5-ssl.mzstatic.com/image/thumb/Purple118/v4/98/b2/41/98b241cc-29b7-5f67-0060-1e030f35562f/source/512x512bb.jpg" "https://is3-ssl.mzstatic.com/image/thumb/Purple117/v4/64/da/aa/64daaaa4-40b5-9e9f-9d60-b936b5d2f3ca/source/512x512bb.jpg" ...
## $ Average.User.Rating : num 4 3.5 3 3.5 3.5 3 2.5 2.5 2.5 2.5 ...
## $ User.Rating.Count : int 3553 284 8376 190394 28 47 35 125 44 184 ...
## $ Price : num 2.99 1.99 0 0 2.99 0 0 0.99 0 0 ...
## $ In.app.Purchases : chr "" "" "" "" ...
## $ Description : chr "Join over 21,000,000 of our fans and download one of our Sudoku games today!\\n\\nMakers of the Best Sudoku Gam"| __truncated__ "The classic game of Reversi, also known as Othello, is a much-loved strategy board game. It is often described "| __truncated__ "Play the classic strategy game Othello (also known as Reversi) on your iPhone or iPod Touch. The object is to f"| __truncated__ "Top 100 free app for over a year.\\nRated \"Best Sudoku Game of the Year\" by Apple.\\nRated #9 Game of the Yea"| __truncated__ ...
## $ Developer : chr "Mighty Mighty Good Games" "Kiss The Machine" "Bayou Games" "Mighty Mighty Good Games" ...
## $ Age.Rating : chr "4+" "4+" "4+" "4+" ...
## $ Languages : chr "DA, NL, EN, FI, FR, DE, IT, JA, KO, NB, PL, PT, RU, ZH, ES, SV, ZH" "EN" "EN" "DA, NL, EN, FI, FR, DE, IT, JA, KO, NB, PL, PT, RU, ZH, ES, SV, ZH" ...
## $ Size : num 15853568 12328960 674816 21552128 34689024 ...
## $ Primary.Genre : chr "Games" "Games" "Games" "Games" ...
## $ Genres : chr "Games, Strategy, Puzzle" "Games, Strategy, Board" "Games, Board, Strategy" "Games, Strategy, Puzzle" ...
## $ Original.Release.Date : chr "11/07/2008" "11/07/2008" "11/07/2008" "23/07/2008" ...
## $ Current.Version.Release.Date: chr "30/05/2017" "17/05/2018" "5/09/2017" "30/05/2017" ...
summary(appstore_games)
## URL ID Name Subtitle
## Length:17007 Min. :2.849e+08 Length:17007 Length:17007
## Class :character 1st Qu.:8.997e+08 Class :character Class :character
## Mode :character Median :1.112e+09 Mode :character Mode :character
## Mean :1.060e+09
## 3rd Qu.:1.287e+09
## Max. :1.475e+09
##
## Icon.URL Average.User.Rating User.Rating.Count Price
## Length:17007 Min. :1.000 Min. : 5 Min. : 0.0000
## Class :character 1st Qu.:3.500 1st Qu.: 12 1st Qu.: 0.0000
## Mode :character Median :4.500 Median : 46 Median : 0.0000
## Mean :4.061 Mean : 3306 Mean : 0.8134
## 3rd Qu.:4.500 3rd Qu.: 309 3rd Qu.: 0.0000
## Max. :5.000 Max. :3032734 Max. :179.9900
## NA's :9446 NA's :9446 NA's :24
## In.app.Purchases Description Developer Age.Rating
## Length:17007 Length:17007 Length:17007 Length:17007
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Languages Size Primary.Genre Genres
## Length:17007 Min. :5.133e+04 Length:17007 Length:17007
## Class :character 1st Qu.:2.295e+07 Class :character Class :character
## Mode :character Median :5.677e+07 Mode :character Mode :character
## Mean :1.157e+08
## 3rd Qu.:1.330e+08
## Max. :4.006e+09
## NA's :1
## Original.Release.Date Current.Version.Release.Date
## Length:17007 Length:17007
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
numeric_data <- appstore_games %>% select_if(is.numeric)
# Measures of central tendency
sapply(numeric_data, mean, na.rm = TRUE)
## ID Average.User.Rating User.Rating.Count Price
## 1.059614e+09 4.060905e+00 3.306531e+03 8.134187e-01
## Size
## 1.157064e+08
sapply(numeric_data, median, na.rm = TRUE)
## ID Average.User.Rating User.Rating.Count Price
## 1112286228.0 4.5 46.0 0.0
## Size
## 56768954.0
sapply(numeric_data, function(x) names(sort(table(x), decreasing = TRUE)[1]))
## ID Average.User.Rating User.Rating.Count Price
## "289217958" "4.5" "5" "0"
## Size
## "49075200"
# Measures of dispersion
sapply(numeric_data, sd, na.rm = TRUE)
## ID Average.User.Rating User.Rating.Count Price
## 2.999676e+08 7.514275e-01 4.232256e+04 7.835732e+00
## Size
## 2.036477e+08
sapply(numeric_data, var, na.rm = TRUE)
## ID Average.User.Rating User.Rating.Count Price
## 8.998055e+16 5.646433e-01 1.791199e+09 6.139869e+01
## Size
## 4.147238e+16
sapply(numeric_data, function(x) max(x, na.rm = TRUE) - min(x, na.rm = TRUE))
## ID Average.User.Rating User.Rating.Count Price
## 1.190155e+09 4.000000e+00 3.032729e+06 1.799900e+02
## Size
## 4.005540e+09
cor_matrix <- cor(numeric_data, use = "complete.obs")
cor_matrix
## ID Average.User.Rating User.Rating.Count
## ID 1.00000000 0.2102799134 -0.03305177
## Average.User.Rating 0.21027991 1.0000000000 0.03302477
## User.Rating.Count -0.03305177 0.0330247705 1.00000000
## Price -0.06853017 -0.0004143548 -0.01114928
## Size 0.21338607 0.0616172008 0.03773621
## Price Size
## ID -0.0685301747 0.21338607
## Average.User.Rating -0.0004143548 0.06161720
## User.Rating.Count -0.0111492816 0.03773621
## Price 1.0000000000 0.16487107
## Size 0.1648710662 1.00000000
# Heatmap
melted_cor <- melt(cor_matrix)
ggplot(melted_cor, aes(Var1, Var2, fill = value)) +
geom_tile(color = "white") +
scale_fill_gradient2(low = "blue", high = "red", mid = "white", midpoint = 0) +
labs(title = "Correlation Heatmap") +
theme_minimal()
ggplot(appstore_games, aes(x = User.Rating.Count, y = Average.User.Rating)) +
geom_point(alpha = 0.5, color = "blue") +
labs(title = "User Ratings vs Number of Reviews",
x = "Number of Reviews",
y = "Average Rating") +
theme_minimal()
Games with a high number of reviews tend to have more stable
ratings.
ggplot(appstore_games, aes(x = Age.Rating, y = Average.User.Rating)) +
geom_boxplot(fill = "orange") +
labs(title = "User Ratings by Age Category") +
theme_minimal()
There are no significant differences in ratings across age
groups.
ggplot(appstore_games, aes(x = Average.User.Rating)) +
geom_histogram(binwidth = 0.5, fill = "steelblue", color = "white") +
labs(title = "Distribution of Average User Ratings") +
theme_minimal()
Most apps have ratings between 4 and 5.
appstore_games %>%
count(Developer, sort = TRUE) %>%
top_n(10) %>%
ggplot(aes(x = reorder(Developer, n), y = n)) +
geom_bar(stat = "identity", fill = "darkgreen") +
coord_flip() +
labs(title = "Top 10 Developers by Number of Games") +
theme_minimal()
Some developers have a dominant presence in the strategy games
category.