Deden Ahmad Rabani (G1401221016) || Muhammad Abdan Rofi (G1401221059) || Shalma Kaisya Candradewi (G1401221105)
Industri data telah menjadi salah satu bidang yang paling berkembang dan menjanjikan dalam beberapa tahun terakhir. Untuk mendapatkan wawasan yang lebih dalam tentang dinamika pekerjaan yang berkaitan dengan data, kami memilih untuk menggunakan dataset yang tersedia dari Kaggle. Dataset yang kami gunakan dapat diakses melalui tautan berikut: https://www.kaggle.com/datasets/zain280/data-science-salaries/data . Dataset ini tidak hanya memberikan informasi tentang gaji, tetapi juga memberikan keragaman aspek lainnya, seperti ukuran perusahaan, tingkat pengalaman, dan faktor-faktor lain yang memengaruhi kompensasi di bidang ilmu data. Dengan menganalisis dataset ini, kami berharap dapat memberikan wawasan yang lebih komprehensif tentang tren dan pola dalam industri data.
data.visdat <- read.csv("C:/Users/ACER/Downloads/ds_salaries (2).csv",sep = ",")
str(data.visdat)
## 'data.frame': 607 obs. of 12 variables:
## $ id : int 0 1 2 3 4 5 6 7 8 9 ...
## $ work_year : int 2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 ...
## $ experience_level : chr "MI" "SE" "SE" "MI" ...
## $ employment_type : chr "FT" "FT" "FT" "FT" ...
## $ job_title : chr "Data Scientist" "Machine Learning Scientist" "Big Data Engineer" "Product Data Analyst" ...
## $ salary : int 70000 260000 85000 20000 150000 72000 190000 11000000 135000 125000 ...
## $ salary_currency : chr "EUR" "USD" "GBP" "USD" ...
## $ salary_in_usd : int 79833 260000 109024 20000 150000 72000 190000 35735 135000 125000 ...
## $ employee_residence: chr "DE" "JP" "GB" "HN" ...
## $ remote_ratio : int 0 0 50 0 50 100 100 50 100 50 ...
## $ company_location : chr "DE" "JP" "GB" "HN" ...
## $ company_size : chr "L" "S" "M" "S" ...
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.2
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
# Menggunakan fungsi aggregate untuk menghitung rata-rata gaji berdasarkan job_title
avg.salary <- aggregate(salary_in_usd ~ job_title, data = data.visdat, FUN = mean)
# Membuat Rangking berdasarkan gaji
avg.salary <- avg.salary %>% mutate(Ranking = rank(salary_in_usd)) # Menggunakan nilai positif untuk mengurutkan dari bawah ke atas
# Filter 10 job title dengan gaji tertinggi
top10_job <- avg.salary %>%
top_n(10, wt = salary_in_usd)
# Memplot menggunakan ggplot2 dengan pengurutan berdasarkan Ranking dan memberi warna
ggplot(data = top10_job,
aes(x = salary_in_usd, y = reorder(job_title, Ranking), fill = salary_in_usd)) +
geom_bar(stat = "identity") +
geom_text(aes(label = salary_in_usd), hjust = 1, color = "white", size = 3) +
labs(title = "Job Title berdasarkan Gaji",
subtitle = "Top 10 Job Title dengan Gaji Tertinggi",
caption = "Sumber: Badan Pusat Statistik", y = "Job title", x = "Gaji (US Dollar)") +
scale_fill_gradient(low = "pink", high = "magenta")
Dari grafik tersebut, dapat dikatakan bahwa posisi pekerjaan dengan gaji
tertinggi adalah sebagai Data Analytics Leader dengan rata-rata gaji
sebesar 405.000 US Dollar. Diikuti oleh Principal Data Enginer dan
Financial Data Analyst dengan rata-rata gaji masing-masing sebesar
328.333,3 dan 275.000 dolar US Dollar secara berurutan.
library(ggplot2)
# Data
data_remote <- table(data.visdat$remote_ratio)
data_remote <- data.frame(value = names(data_remote), frequency = as.numeric(data_remote))
# Membuat bar chart
ggplot(data_remote, aes(x = value, y = frequency, label = frequency)) +
geom_bar(stat = "identity", fill = "salmon", color = "black") +
geom_text(size = 3, position = position_stack(vjust = 0.5)) +
labs(x = "Remote Ratio", y = "Frequency", title = "Bar Chart of Remote Ratio") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 0, hjust = 1))
Remote ratio adalah perbandingan waktu kerja dari jarak jauh dengan
waktu kerja di kantor fisik. Semakin tinggi remote ratio, semakin banyak
waktu yang dihabiskan untuk bekerja dari jarak jauh. Barchart diatas
menunjukkan bahwa paling banyak pekerjaan di bidang data yaitu sebesar
381 pekerjaan, memiliki remote ratio 100, artinya kebanyakan mereka
bekerja dari jarak jauh dan tidak pernah di kantor fisik. Hal ini
mencerminkan tren kerja modern yang semakin mengadopsi model kerja jarak
jauh.
# Mengubah variabel Bulan menjadi faktor dengan urutan yang diinginkan
data.visdat$experience_level <- factor(data.visdat$experience_level, levels = c("EN", "MI", "SE", "EX"))
ggplot(data = data.visdat, aes(x = experience_level, y = salary_in_usd, fill = experience_level , color=experience_level)) +
geom_boxplot(color="black") +
theme()+
scale_fill_manual(values = c("coral", "#EF4040","pink", "#C21292")) +
labs(x = NULL, y = "Besar Gaji (US Dollar")
data.visdat$experience_level <- factor(data.visdat$experience_level, levels = c("EN", "MI", "SE", "EX"))
ggplot(data.visdat, aes(experience_level, salary_in_usd)) +
geom_violin(aes(col = experience_level), fill = NA, draw_quantiles = c(0.25,0.5,0.75)) +
labs(title = "Violin Plot Sebaran Data Gaji Berdasarkan Pengalaman Kerja",
caption = "Sumber: Badan Pusat Statistik")
Keterangan - EN: Entry-level - MI: Mid-level - SE: Senior-level - EX:
Executive-level Berdasarkan sebaran boxplot dan violin plot tersebut
dapat terlihat bahwa semakin tinggi pengalaman pekerjaan yang telah
dilalui, maka semakin tinggi gaji yang diterima. Hal ini dapat
dibuktikan dengan median dari tiap boxplot yang semakin tinggi.
Perbedaan gaji antara berbagai tingkat pengalaman tersebut menggambarkan
pentingnya akumulasi pengalaman dalam meningkatkan nilai dan penghargaan
pekerja.
ggplot(data = data.visdat) +
geom_density(aes(x = salary_in_usd, fill = as.factor(work_year), color = as.factor(work_year)), alpha = 0.5) +
labs(title = "Density Plot Sebaran Data Gaji Tiap Tahun",
x = "Gaji (US Dollar)",
y = "Jumlah") +
theme(plot.title = element_text(hjust = 0.5))
Dari density plot diatas, terlihat bahwa distribusi gaji cenderung
berubah dari tahun ke tahun.Terdapat peningkatan gaji dari tiap
tahunnya. Hal ini dibuktikan dengan puncak density plot yang bergeser ke
kanan. Dengan memperhatikan pola sebaran gaji tiap tahun, kita dapat
mengidentifikasi tren dan pola yang mungkin mempengaruhi keputusan
penggajian serta mengantisipasi perubahan dalam struktur penghasilan
individu dari waktu ke waktu.
#Membuat data baru job title berdasarkan frekuensi job title
data.job <- table(data.visdat$job_title)
data.job <- data.frame(value = (names(data.job)), frequency = as.numeric(data.job))
# Memasukkan library treemap
library(treemap)
## Warning: package 'treemap' was built under R version 4.3.3
# Membuat treemap
treemap(data.job,
index = "value", # Kolom untuk kategori
vSize = "frequency", # Kolom untuk ukuran
title = "Proporsi Job title") # Judul treemap
Berdasarkan treemap tersebut, dapat dilihat bahwa pekerjaan di industri
data paling dominan ada 3 yaitu Data Scientist, Data Engineer dan Data
Analyst dengan proporsi berturut turut sebesar 23,56%, 21,75%, dan
15,98%.
library(d3Tree)
## Warning: package 'd3Tree' was built under R version 4.3.3
salary_data <- c(data.visdat$salary_currency)
data_frame <- data.frame(salary_currency = salary_data)
table(data.visdat$salary_currency)
##
## AUD BRL CAD CHF CLP CNY DKK EUR GBP HUF INR JPY MXN PLN SGD TRY USD
## 2 2 18 1 1 2 2 95 44 2 27 3 2 3 2 3 398
datavis <- data.frame(
jenis = c("AUD","BRL","CAD","CHF","CLP","CNY","DKK","EUR","GBP","HUF","INR","JPY","MXN","PLN","SGD","TRY","USD"),
jumlah = c(2, 2, 18, 1, 1, 2, 2, 95, 44, 2, 27, 3, 2, 3, 2, 3, 398)
)
treemap(datavis,
index="jenis",
vSize="jumlah",
type="index",
title="Proporsi salary currency",
fontcolor.labels = "white",
fontsize.labels = 10,
fontsize.title=13,
border.lwds = 0,
border.col = "white")
Dalam analisis yang mengacu pada treemap, dapat diamati bahwa proporsi
Salary Currency menunjukkan dominasi yang signifikan, terutama pada USD
yang mencapai 65,56%. Selain itu, EUR juga memberikan kontribusi yang
cukup besar dengan persentase sebesar 15,65%. Analisis mendalam terhadap
distribusi nilai ini memberikan wawasan tentang struktur mata uang yang
digunakan dalam kaitannya dengan gaji, dengan USD sebagai pemimpin utama
diikuti oleh kontribusi yang substansial dari EUR.
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.3.3
library(dplyr)
library(plyr)
## Warning: package 'plyr' was built under R version 4.3.2
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
##
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
#Subset data
exp.S <- subset(data.visdat[,c("company_size","experience_level")], company_size == "S")
exp.S <- exp.S[,"experience_level"]
exp.M <- subset(data.visdat[,c("company_size","experience_level")], company_size == "M")
exp.M <- exp.M[,"experience_level"]
exp.L <- subset(data.visdat[,c("company_size","experience_level")], company_size == "L")
exp.L <- exp.L[,"experience_level"]
category.exp.S <- table(exp.S)
category.exp.M <- table(exp.M)
category.exp.L <- table(exp.L)
dat.exp.S <- data.frame(value = (names(category.exp.S)), frequency = as.numeric(category.exp.S))
dat.exp.M <- data.frame(value = (names(category.exp.M)), frequency = as.numeric(category.exp.M))
dat.exp.L <- data.frame(value = (names(category.exp.L)), frequency = as.numeric(category.exp.L))
data.exp <- data.frame(dat.exp.S, dat.exp.M[,"frequency"], dat.exp.L[,"frequency"])
colnames(data.exp) <- c("experience_level", "S", "M", "L")
# Melt the data
data.exp.melt <- melt(data.exp, id.vars = "experience_level")
# Calculate proportions
data.exp.melt <- ddply(data.exp.melt, "experience_level", transform, prop = value / sum(value))
# Plot
ggplot(data.exp.melt, aes(x = experience_level, y = prop, fill = variable)) +
geom_bar(stat = "identity") +
geom_text(aes(label = scales::percent(prop), group = variable),
position = position_stack(vjust = 0.5),
color = "white", size = 3) + # Menambahkan label proporsi
scale_y_continuous(labels = scales::percent_format()) +
labs(x = "experience_level", y = "Proportion", fill = "Group") +
ggtitle("Stacked Bar Chart of Proportions") +
theme_minimal()+
theme(plot.margin = margin(0, -5, 0, 0, "pt"))+
coord_flip()
Dari stacked bar chart diatas, menunjukan proporsi antara pengalaman
kerja dengan besarnya perusahaan yang ia tempati. Terlihat bahwa
mayoritas orang bekerja di perusahaan yang menengah baik itu
Entry-level, Mid-level, Senior-level, maupun Executive-level. Fakta lain
menunjukan bahwa banyak juga orang dengan pengalaman Entri Level yaitu
sebesar 40,85% bekerja di perusahaan yang besar.
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.2
## Warning: package 'tibble' was built under R version 4.3.2
## Warning: package 'tidyr' was built under R version 4.3.2
## Warning: package 'readr' was built under R version 4.3.2
## Warning: package 'purrr' was built under R version 4.3.2
## Warning: package 'stringr' was built under R version 4.3.2
## Warning: package 'forcats' was built under R version 4.3.2
## Warning: package 'lubridate' was built under R version 4.3.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.0
## ✔ readr 2.1.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ plyr::arrange() masks dplyr::arrange()
## ✖ purrr::compact() masks plyr::compact()
## ✖ plyr::count() masks dplyr::count()
## ✖ plyr::desc() masks dplyr::desc()
## ✖ plyr::failwith() masks dplyr::failwith()
## ✖ dplyr::filter() masks stats::filter()
## ✖ plyr::id() masks dplyr::id()
## ✖ dplyr::lag() masks stats::lag()
## ✖ plyr::mutate() masks dplyr::mutate()
## ✖ plyr::rename() masks dplyr::rename()
## ✖ plyr::summarise() masks dplyr::summarise()
## ✖ plyr::summarize() masks dplyr::summarize()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
table(data.visdat$work_year)
##
## 2020 2021 2022
## 72 217 318
data.vis <- data_frame(
work_year = c("2020", "2021", "2022"),
nilai = c(72, 217 ,318 )
)
## Warning: `data_frame()` was deprecated in tibble 1.1.0.
## ℹ Please use `tibble()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
ggplot(data.vis, aes(x = 2, y = nilai, fill = work_year)) +
geom_bar(stat = "identity", color = "white", width = 1) +
coord_polar(theta = "y") +
geom_text(aes(label = paste0(work_year, ": ", nilai),
y = nilai),
position = position_stack(vjust = 0.5),
color = "black") +
scale_fill_manual(values = c("2020" = "pink",
"2021" = "purple",
"2022" = "lightblue")) + # Sesuaikan warna fill
theme_void() +
xlim(0.5, 2.5) +
labs(title = "Proporsi Work Year") +
theme(legend.position = "right")
Dengan merujuk pada representasi visual data dalam bentuk grafik
lingkaran donat yang tertera di atas, dapat disimpulkan bahwa pada tahun
2022 tercatat jumlah pekerja yang mencapai puncaknya yakni sebanyak 318
orang. Menariknya, dalam setiap peninjauan tahunan, terlihat pola
konsisten dari tahun ke tahun yang menunjukkan peningkatan
berkesinambungan dalam jumlah orang yang terlibat dalam dunia kerja.