Judul Gambar

1 Explanation

Data-data game ini memiliki potensi yang dapat kita rekomendasikan sebagai game terlaris. Pada dokumen ini dibuat beberapa contoh visualisasi dari data-data game ps4 yang mudah-mudahan dapat memberikan sedikit gambaran manfaat visualisasi sebagai bahan untuk mendownload game yang sedang booming.

Beberapa visualisasi yang akan di tampilkan di antaranya adalah :

  • Melihat jumlah Salinan yang terjual berdasarkan jenis game dan genre nya
  • Visualisasi kedua kategorinya menggunakan ggplot

Harus diakui pada projek kali ini data yang dibuat sedetail mungkin, agar ketika ingin menganalisis dan mengevaluasi lebih jauh, data-data sudah siap untuk diproses.

2 Set Up

Seperti biasa set up awal untuk mengeset format chunk pada markdown ini.

options(scipen = 9999)
rm(list=ls())

Set up library yang akan digunakan

library(lubridate)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
library(ggplot2)

3 Data Input

Proses mengimpor dataset ps4

ps4 <- read.csv("datainput/selling_ps4.csv")
head(ps4)

3.1 Data Infection, Cleansing & Coertions

Mengecek nama untuk tiap kolom pada data frame ps4

names(ps4)
## [1] "Game"            "Copies.sold"     "Release.date.a." "Genre.s."       
## [5] "Developer.s."    "Publisher.s."

Mengecek struktur data frame ps4

str(ps4)
## 'data.frame':    33 obs. of  6 variables:
##  $ Game           : chr  "Marvel's Spider-Man" "God of War" "Uncharted 4: A Thief's End" "The Witcher 3: Wild Hunt" ...
##  $ Copies.sold    : chr  "20 million" "19.5 million" "16 million" "10.8 million" ...
##  $ Release.date.a.: chr  "September 7, 2018" "April 20, 2018" "May 10, 2016" "May 18, 2015" ...
##  $ Genre.s.       : chr  "Action-adventure" "Action-adventure hack and slash" "Action-adventure" "Action role-playing" ...
##  $ Developer.s.   : chr  "Insomniac Games" "Santa Monica Studio" "Naughty Dog" "CD Projekt Red" ...
##  $ Publisher.s.   : chr  "Sony Interactive Entertainment" "Sony Interactive Entertainment" "Sony Interactive Entertainment" "CD Projekt" ...

Setelah kita berhasil memasukkan data-data ps4 tersebut, tahap pertama adalah melakukan perubahan format pada element-element dalam data frame sehingga sesuai dengan isi data tersebut atau sesuai untuk keperluan processing nantinya. Pertama kita bisa melihat bahwa kolom Release.date yang berisi date yang ada dalam ps4 masih berupa character. Date tersebut akan kita rubah menjadi bertipe date MDY dengan cara sebagai berikut.

Tipe kolom App pada data frame gplay sebelum di konversi

class(ps4$Release.date.a.)
## [1] "character"

Merubah kolom ps4$Release.date.a. menjadi date MDY

ps4$Release.date.a. <- as.Date(mdy(ps4$Release.date.a.))

Merubah kolom ps4$Copies.sold menjadi numerik

ps4$Copies.sold <- as.numeric(gsub(" million", "", ps4$Copies.sold))
ps4$Copies.sold <- ps4$Copies.sold * 1000000
str(ps4)
## 'data.frame':    33 obs. of  6 variables:
##  $ Game           : chr  "Marvel's Spider-Man" "God of War" "Uncharted 4: A Thief's End" "The Witcher 3: Wild Hunt" ...
##  $ Copies.sold    : num  20000000 19500000 16000000 10800000 10000000 10000000 10000000 9730000 8420000 8000000 ...
##  $ Release.date.a.: Date, format: "2018-09-07" "2018-04-20" ...
##  $ Genre.s.       : chr  "Action-adventure" "Action-adventure hack and slash" "Action-adventure" "Action role-playing" ...
##  $ Developer.s.   : chr  "Insomniac Games" "Santa Monica Studio" "Naughty Dog" "CD Projekt Red" ...
##  $ Publisher.s.   : chr  "Sony Interactive Entertainment" "Sony Interactive Entertainment" "Sony Interactive Entertainment" "CD Projekt" ...

Tipe kolom App pada data frame ps4 setelah di konversi menjadi date MDY dan numerik

class(ps4$Release.date.a.)
## [1] "Date"

Mengecek 10 baris pertama dari kolom App yang sudah kita ubah

head(ps4$Release.date.a., 10)
##  [1] "2018-09-07" "2018-04-20" "2016-05-10" "2015-05-18" "2020-06-19"
##  [6] "2017-02-28" "2014-07-29" "2020-07-17" "2015-11-17" "2017-10-17"

Melihat 1 contoh penerbit yang pertama kali muncul dan terduplikasi lebih dari 4 kali

ps4_dplct <- as.data.frame(table(ps4$Publisher.s.))
ps4_dplct
subset(ps4_dplct, ps4_dplct$Freq > 4)[1,]

Melihat aplikasi tersebut pada data frame ps4

subset(ps4, ps4$Publisher.s. %in% (subset(ps4_dplct, ps4_dplct$Freq > 4,1)[1,]) )

Pada contoh di atas kita mendapatkan Publisher bernama “Sony Computer Entertainment” yang terduplikasi sebanyak 7 kali. Dari data tersebut maka dapat kita simpulkan aplikasi “Sony Computer Entertainment” dalam semua parameter memiliki perbedaan, Oleh karena itu kita tidak bisa menghapus data-data duplikasi tersebut menggunakan fungsi “unique”.

Mendeteksi NaN pada data frame ps4

colSums(is.na(ps4))
##            Game     Copies.sold Release.date.a.        Genre.s.    Developer.s. 
##               0               0               0               0               0 
##    Publisher.s. 
##               0

Mencari kolom-kolom yang memiliki elemen kosong

colSums(ps4 == "")
##            Game     Copies.sold Release.date.a.        Genre.s.    Developer.s. 
##               0               0              NA               0               0 
##    Publisher.s. 
##               0

4 Data Processing dan Plotting

Melihat persebaran aplikasi berdasarkan game di ps4

head(ps4, 10)
ps4_agg <- aggregate(x = Copies.sold ~ Game + Release.date.a., 
                     data = ps4,
                      FUN = sum)
head(ps4_agg)
ggplot(data = ps4_agg, mapping = aes(x = Copies.sold, y = reorder(Game, Copies.sold))) +
  geom_col(aes(fill = Release.date.a.), position = "stack")

Grafik di atas menggambarkan sebaran game yang terlaris berdasarkan jenis game. Antara tahun 2018 sampai dengan tahun 2020 menunjukan bahwa popularitas gamers meningkat dengan nama game “Marvel’s Spider-Man”.

ps4_Genre <- aggregate(Copies.sold ~ Genre.s.,
                        data = ps4,
                        FUN = sum)
ps4_Genre
ggplot(data = ps4_Genre, mapping = aes(x = Copies.sold, y = reorder(Genre.s., Copies.sold))) +
  geom_col(aes(fill = Copies.sold)) +
  geom_vline(aes(xintercept = mean(Copies.sold)), lwd = 1, color = "pink") +
  scale_fill_gradient(low = "grey", high = "navy")

Grafik di atas menggambarkan sebaran genre game yang terlaris adalah jenis genre game “Action-adventure”. Secara rata-rata untuk copies.sold nya berada diangka 10,2M dan untuk total copies.sold tertinggi diangka 40,4M.