appstore_games <- read.csv("appstore_games.csv")
colnames(appstore_games) <- make.names(colnames(appstore_games))

Dataset Description

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.

Business Analytics & Research Questions

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?

Variable Description

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            
##                                                    
##                                                    
##                                                    
## 

Descriptive Statistics

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

Correlation Analysis

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

Scatterplot: User Rating Count vs Average Rating

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.

Boxplot: Ratings by Age Category

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.

Histogram: Rating Distribution

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.

Bar Chart: Top 10 Developers

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.