1. Intro
Hello … Data yang akan digunakan adalah data dari tidytuesday tanggal 2021-03-16. Data ini memuat performa game - game windows pada platform steam.
Proprocessing
Import
Import data melalui github
games <- read.csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-03-16/games.csv')
gamesmerubah persentase pada avg_peak_perc menjadi numerik
games$avg_peak_perc <- as.numeric(gsub("%", "", games$avg_peak_perc))
class(games$avg_peak_perc)## [1] "numeric"
head(games$avg_peak_perc)## [1] 65.9567 62.1275 44.4707 61.4752 52.4988 75.7603
Change Data Types
melihat tipe data
games$gamename <- as.factor(gsub("[[:punct:]]", " ", games$gamename))
games$month <- as.factor(games$month)
str(games)## 'data.frame': 83631 obs. of 7 variables:
## $ gamename : Factor w/ 1258 levels " U 4E09 U 56FD U 7FA4 U 82F1 U 4F20 8 Heroes of the Three Kingdoms 8",..: 215 323 804 52 891 1041 492 1119 880 778 ...
## $ year : int 2021 2021 2021 2021 2021 2021 2021 2021 2021 2021 ...
## $ month : Factor w/ 12 levels "April","August",..: 4 4 4 4 4 4 4 4 4 4 ...
## $ avg : num 741013 404832 198958 120983 117742 ...
## $ gain : num -2196 -27840 -2290 49216 -24375 ...
## $ peak : int 1123485 651615 447390 196799 224276 133620 146438 113338 103429 90539 ...
## $ avg_peak_perc: num 66 62.1 44.5 61.5 52.5 ...
Heads
melihat 10 data pertama
head(games)Tails
melihat 10 data terakhir
tail(games)Check Null Data
Mengecek apakah ada data yang null
colSums(is.na(games))## gamename year month avg gain
## 0 0 0 0 1258
## peak avg_peak_perc
## 0 156
terdapat 1258 data dari kolom gain 156 dari kolom avg_peak_perc yang kosong, maka kita akan menghapus data yang nan
games <- na.omit(games)
dim(games)## [1] 82267 7
colSums(is.na(games))## gamename year month avg gain
## 0 0 0 0 0
## peak avg_peak_perc
## 0 0
Summary
summary data games
summary(games)## gamename year month
## Age of Empires III 2007 : 103 Min. :2012 February : 7448
## AirMech Strike : 103 1st Qu.:2016 January : 7371
## Alan Wake : 103 Median :2018 December : 7274
## Alan Wake s American Nightmare: 103 Mean :2017 November : 7176
## Alien Swarm : 103 3rd Qu.:2019 October : 7059
## Aliens vs Predator : 103 Max. :2021 September: 6963
## (Other) :81649 (Other) :38976
## avg gain peak avg_peak_perc
## Min. : 0.0 Min. :-250249.0 Min. : 1 Min. : 0.00
## 1st Qu.: 53.9 1st Qu.: -38.3 1st Qu.: 139 1st Qu.:34.63
## Median : 203.1 Median : -1.6 Median : 499 Median :43.90
## Mean : 2749.3 Mean : -10.3 Mean : 5419 Mean :42.58
## 3rd Qu.: 756.0 3rd Qu.: 22.3 3rd Qu.: 1706 3rd Qu.:51.39
## Max. :1584886.8 Max. : 426446.1 Max. :3236027 Max. :88.84
##
Dari summary dapat diketahui:
Data dimulai pada tahun 2012 sampai tahu 2019, dengan data paling banyak pada tahun 2018
Jumlah data pada bulan februari paling banyak dibandingkan data bulan lainya
pertumbuhan pemain dimuali dari 0 sampai 1584886 pemain per observasi, dengan rata rata pertumbuhan pemain 2749.3
pertumbuhan pemain sangat bervariasi dengan nilai maksimal 426446.1 dan nilai minimal -250249.0 dengan rata rata -10.3 dimana pada kebanyakan video game mayoritas mengalami penurunan -10.3 pemain per observasi
Study Cases
Study Case 1
membuat dataframe dari data terakhir tiap nama game yang berbeda
unique_game <- games[order(games$year, decreasing = T), ]
gm.unik <- unique_game[ match(x = unique(unique_game$gamename), table = unique_game$gamename), ]
gm.unikkita akan melihat pertumbuhan pemain pada tiap game (gain) karena terdapat 1,258 judul kita kan mencari 10 yang memiliki gain terbanyak
sub_set1 <- gm.unik[order(gm.unik$gain, decreasing = T), ]
sub_set1 <- head(sub_set1, 10)
sub_set1$gamename <- as.factor(sub_set1$gamename)
# ggplot
ggplot(data = sub_set1,
aes(x = gain,
y = reorder(gamename, gain),
fill = peak)
) +
geom_col() +
labs(title="Grafik Perbandingan Pertumbuhan Pemain Game",
subtitle = "Untuk Pertumbuhan 10 Paling Banyak",
caption = "source: tidytuesday",
y="Judul Game",
x="Jumlah Pertumbuhan Pemain",
fill = "Peak Of Total Players") +
scale_fill_gradient(low = "red", high = "yellow")Penjelasan Grafik 1
Terlihat bahwa Apex Legends memiliki jumlah pertumbuhan pemain yang paling tinggi dari game lainya
Tetapi dalam jumlah pertumbuhan game World of Warships memiliki jumlah peak pemain yang sangat tinggi dimana menandakan pemain berada dalam retensi yang tinggi
Team Fortress 2, Apex Legends, dan Destiny 2 memiliki genre yang sama tetapi jumlah pemain yang cukup berbeda dimana apex legend mendominasi genre
Study Case 2
Kita akan melakukan visualisasi pertumbuhan pemain antara data observasi pertama kali dengan data observasi terakhir degan judul avg_diff
x_p <- c()
for (val in gm.unik$gamename) {
data = games[games$gamename == val, ]
data = data[order(data$year, decreasing = T), ]
last_data <- tail(data, 1)
first_data <- head(data, 1)
gain_diff <- first_data$avg - last_data$avg
x_p <- c(x_p,gain_diff )
}
gm.unik$avg_diff <- x_p
gm.unikgam_agg <- aggregate(avg ~ avg_diff + gamename + peak, gm.unik, mean)
sub_set2 <- head(gam_agg[order(gam_agg$avg, decreasing = T), ], 10)
ggplot(data = sub_set2,
aes(x = avg,
y = reorder(gamename, avg),
size= avg,
color=avg_diff
)
) +
geom_point() +
labs(title="Grafik Perbandingan Pemain Game",
subtitle = "Untuk 10 game dengan jumlah pemain paling banyak",
caption = "source: tidytuesday",
y="Judul Game",
x="Jumlah Pemain",
size = "Peak Players",
color = "Diff Avg") +
theme_minimal() +
scale_color_gradient(low = "green", high = "YELLOW") +
guides(size = F)Penjelasan Grafik 2
Dalam hal jumlah pemain Counter Strike Global Offensive memiliki jumlah pemain paling banyak dan pertumbuhan pemain yang sangat tinggi dimana akumulasi pemain observasi pertama dikurangi oservasi terakhir masih sangat tinggi berada di antara 600000 pemain. Hanya pada game ini memiliki perbedaan pemain di sekitar 600000
Dota 2 memiliki jumlah pemain yang terbesar kedua setelah Counter Strike Global Offensive hal ini mungkin saja dikarenakan kesulitan mengusai game dimana game Counter Strike Global Offensive lebih mudah dimainkan dan tidak terlalu rumit dibandingkan Dota 2. Tetapi walaupun begitu Dota 2 dengan genre MOBA bersaing dengan banyak pemain dengan genre First Person Shooters dan tetap mengunguli baik dari jumlah pamain maupun perbedaan jumlah observasi yang cukup tinggi
Apex legend yang mana memiliki pertumbuhan pemain yang tinggi masih kalah dengan game yang sudah rilis terlebih dahulu seperti Dota 2 dan Counter Strike Global Offensive.
Study Case 3
Akan dilihat pertumbuhan pemain berbanding dengan peak pemain
ggplot(data = games,
aes(x = peak,
y = avg,
size = avg,
color=peak
)
) +
geom_point() +
labs(title="Grafik Pertumbuhan Pemain Game",
subtitle = "Mulai Tahun 2012 - 2019",
caption = "source: tidytuesday",
y="Pertumbuhan Pemain",
x="Jumlah Peak Pemain",
size="Jumlah Pemain",
color="Peak Pemain") +
theme_pander() +
theme(
plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)
) +
geom_smooth(aes(peak, avg)) +
scale_color_gradient(low = "red", high = "yellow") +
guides(size = F) +
theme(
plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)
)## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
Penjelasan Grafik
Terlihat bahwa pertumbuhan pemain berbanding lurus dengan peak pemain dimana hal ini menandakan dengan bertambahnya pamain baru retensi pemain pun tetap bertambah dimana banyak pemain lama dan pemain baru tetap menyukai bermain game
Study Case 4
data_agg2 <- aggregate(avg ~ year, games, sum)
ggplot(data = data_agg2,
aes(x = year,
y = avg,
size = year,
color = avg
)
) +
geom_point() +
scale_color_gradient(low = "red", high = "yellow") +
guides(size=F) +
labs(title="Grafik Pertumbuhan Pemain Game",
subtitle = "Mulai Tahun 2012 - 2019",
caption = "source: tidytuesday",
y="Tahun",
x="Pertumbuhan Jumlah Pemain",
size="Tahun",
color="Jumlah Pemain") +
theme_pander() +
theme(
plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)
)Penjelasan Grafik 4
Bila dilihat dari grafik pertumbuhan pemain tidak selalu naik tiap tahun, contohnya oada tahun 2019 terdapat penurunan pertambahan pemain. Bila dilihat tahun 2020 merupakan tahun dengan pertambahan pemain tertinggi hal ini salah satunya dikarenakan karena adanya virus corona yang menyebabkan setiap orang harus tetap berada di dalam rumah yan mendorong orang orang untuk lebih sering bermain game
Study Case 5
Akan di visualisasikan persebaran pertumbuhan pemain dalam bulan
data_agg3 <- aggregate(avg ~ year + month, games, max)
ggplot(data = data_agg3,
aes(x = avg,
y = reorder(month, avg)
)
) +
geom_boxplot() + geom_line() +
theme_fivethirtyeight() +
labs(title="Grafik Sebaran Pemain Game",
subtitle = "Mulai Tahun 2012 - 2019",
caption = "source: tidytuesday",
y="Tahun",
x="Pertumbuhan Jumlah Pemain",
size="Tahun",
color="Jumlah Pemain") +
theme(
plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)
)Penjelasan Grafik 5
Bila dilihat pada grafik januari merupakan bulan yang memiliki pertumbuhan pemain yang paling tidak stabil dengan Q1 dibawah 400000 dan Q3 hampir mendekati 1600000 tetapi di bulan januari juga merupakan bulan dengan pertumbuhan pemain paling tinggi kedua. Bulan februari merupakan bulan dengan pertumbuhan pemain paling tinggi.