Import Data
vgsales <- read.csv("vgsales.csv", sep=",", na.strings = c("N/A"))
head(vgsales)
Aktifkan library
library(tidyverse)
library(scales)
library(ggrepel)
Mengecek tipe data
glimpse(vgsales)
## Rows: 16,598
## Columns: 11
## $ Rank <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,...
## $ Name <chr> "Wii Sports", "Super Mario Bros.", "Mario Kart Wii", "...
## $ Platform <chr> "Wii", "NES", "Wii", "Wii", "GB", "GB", "DS", "Wii", "...
## $ Year <int> 2006, 1985, 2008, 2009, 1996, 1989, 2006, 2006, 2009, ...
## $ Genre <chr> "Sports", "Platform", "Racing", "Sports", "Role-Playin...
## $ Publisher <chr> "Nintendo", "Nintendo", "Nintendo", "Nintendo", "Ninte...
## $ NA_Sales <dbl> 41.49, 29.08, 15.85, 15.75, 11.27, 23.20, 11.38, 14.03...
## $ EU_Sales <dbl> 29.02, 3.58, 12.88, 11.01, 8.89, 2.26, 9.23, 9.20, 7.0...
## $ JP_Sales <dbl> 3.77, 6.81, 3.79, 3.28, 10.22, 4.22, 6.50, 2.93, 4.70,...
## $ Other_Sales <dbl> 8.46, 0.77, 3.31, 2.96, 1.00, 0.58, 2.90, 2.85, 2.26, ...
## $ Global_Sales <dbl> 82.74, 40.24, 35.82, 33.00, 31.37, 30.26, 30.01, 29.02...
Terdapat kolom dengan tipe data yang tidak sesuai, yaitu kolom “Platform”, “Year”, “Genre”, dan “Publisher”.
Tetapi karena data yang dibutuhkan untuk analisis visualisasi hanya berfokus pada “Year” dan “Genre”, maka hanya 2 kolom itu saja yang diubah tipe datanya sekaligus sebagai efesiensi metode pengerjaan dan efektifitas waktu pengerjaan.
Mengubah tipe data kolom menjadi lebih sesuai
vgsales$Year <- as.factor(vgsales$Year)
vgsales$Genre <- as.factor(vgsales$Genre)
glimpse(vgsales)
## Rows: 16,598
## Columns: 11
## $ Rank <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,...
## $ Name <chr> "Wii Sports", "Super Mario Bros.", "Mario Kart Wii", "...
## $ Platform <chr> "Wii", "NES", "Wii", "Wii", "GB", "GB", "DS", "Wii", "...
## $ Year <fct> 2006, 1985, 2008, 2009, 1996, 1989, 2006, 2006, 2009, ...
## $ Genre <fct> Sports, Platform, Racing, Sports, Role-Playing, Puzzle...
## $ Publisher <chr> "Nintendo", "Nintendo", "Nintendo", "Nintendo", "Ninte...
## $ NA_Sales <dbl> 41.49, 29.08, 15.85, 15.75, 11.27, 23.20, 11.38, 14.03...
## $ EU_Sales <dbl> 29.02, 3.58, 12.88, 11.01, 8.89, 2.26, 9.23, 9.20, 7.0...
## $ JP_Sales <dbl> 3.77, 6.81, 3.79, 3.28, 10.22, 4.22, 6.50, 2.93, 4.70,...
## $ Other_Sales <dbl> 8.46, 0.77, 3.31, 2.96, 1.00, 0.58, 2.90, 2.85, 2.26, ...
## $ Global_Sales <dbl> 82.74, 40.24, 35.82, 33.00, 31.37, 30.26, 30.01, 29.02...
Mengecek data yang missing
colSums(is.na(vgsales))
## Rank Name Platform Year Genre Publisher
## 0 0 0 271 0 58
## NA_Sales EU_Sales JP_Sales Other_Sales Global_Sales
## 0 0 0 0 0
Pada kolom “Year” terdapat missing value sebanyak 271, dan pada kolom “Publisher” sebanyak 58. Karena terdapat missing value, maka yang saya lakukan adalah menghilangkan missing value tersebut
Menghapus missing value
vgsaless <- na.omit(vgsales)
Pengecekan missing value setelah di hapus
colSums(is.na(vgsaless))
## Rank Name Platform Year Genre Publisher
## 0 0 0 0 0 0
## NA_Sales EU_Sales JP_Sales Other_Sales Global_Sales
## 0 0 0 0 0
Subsetting dan Aggregation data dilakukan untuk memilih dan mengolah data yang akan kita gunakan untuk visualisasi
4.1 Jumlah Penjualan Global (Global Sales) berdasarkan dari Genre game yang dimainkan
Membuat variabel bernama “data1” untuk dianalisis
data1 <- vgsaless[,c("Genre","Global_Sales")]
data1 <- aggregate(Global_Sales~Genre,vgsaless,FUN=mean)
data1
4.2 Hubungan antara Penjualan Global (Global Sales) dengan Tahun Penerbitan
Membuat variabel bernama “data2” untuk dianalisis
data2 <- vgsaless[,c("Year","Global_Sales")]
data2 <- aggregate(Global_Sales~Year,vgsaless,FUN=mean)
data2
Menampilkan data dengan visualisasi
5.1 Jumlah Penjualan Global (Global Sales) berdasarkan dari Genre game yang dimainkan
plot1 <- ggplot(data1,aes(x=Global_Sales, y=reorder(Genre,Global_Sales))) +
geom_col(fill="darkblue",show.legend = F) +
geom_text(aes(label= round(Global_Sales,2)),color="white") +
labs(title="Top Genre by Global Sales",x="Global Sales", y="Genre") +
scale_x_continuous(labels = dollar_format(prefix="$",suffix = "M"))+
theme_dark()
plot1
5.2 Hubungan antara Penjualan Global (Global Sales) dengan Tahun Penerbitan
plot2 <- ggplot(data2,aes(x=Global_Sales, y=Year)) +
geom_point(pch=15,color="darkblue") +
geom_text_repel(data = data2[order(data2$Global_Sales, decreasing = T)[1] , ],
aes(label = round(Global_Sales,2)), size = 3) +
geom_text_repel(data = data2[order(data2$Global_Sales, decreasing = F)[1] , ],
aes(label = round(Global_Sales,2)), size = 3) +
theme_minimal()+
labs(title = "Hubungan antara Penjualan dengan Tahun Penerbitan",
x = "Global Sales",
y = "Year") +
scale_x_continuous(labels = dollar_format(prefix="$",suffix = "M"))
plot2
Dari data yang sudah diolah dan divisualisasi data diambil beberapa kesimpulan.
6.1 Jumlah Penjualan Global (Global Sales) berdasarkan dari Genre game yang dimainkan.
Analisis:
-Terdapat 12 Genre game dipasaran (market) pada tahun 1980 hingga 2020
-Game dengan Genre Platfrom merupakan Genre yang paling laris dengan jumlah penjualan global sebanyak $0.95 Millions
-Game dengan Genre Adventure merupakan Genre yang kurang laris dengan jumlah penjualan global sebanyak $0.18 Millions
Saran:
Berdasarkan analisis diatas dapat disarankan jika pembuat game ingin membuat game maka buatlah dengan genre Platform, karena genre tersebut merupakan genre yang paling laris/laku dipasaran.
6.2 Hubungan antara Penjualan Global (Global Sales) dengan Tahun Penerbitan.
Analisis:
-Penjualan game di analisis mulai dari tahun 1980 hingga 2020
-Penjualan tertinggi dengan nilai $4.32 Millions ada pada tahun 1989
-Penjualan tertinggi dengan nilai $0.02 Millions ada pada tahun 2017
-Nilai penjualan mulai terlihat konstan dengan nilai yang tidak begitu jauh antar tahunnya, mulai dari tahun 1993 hingga 2020
Saran:
Berdasarkan analisis diatas dapat disarankan jika pembuat game ingin membuat game yang memiliki nilai penjualan yang tinggi, maka pembuat game dapat melihat refrensi baik secara konsep ataupun tipe game dari game yang ada pada tahun 1980 sampai 1990 dan pastinya bisa dikemas secara modern