Disusun Oleh:
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.
ds <- read.csv("C:/Users/acer/OneDrive - apps.ipb.ac.id/Semester 4/Visdat/ds_salaries.csv", sep = ",")
str(ds)
## '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.2
# Menggunakan fungsi aggregate untuk menghitung rata-rata gaji berdasarkan job_title
avg.salary <- aggregate(salary_in_usd ~ job_title, data = ds, 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 = "orange", high = "red")
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
ds_remote <- table(ds$remote_ratio)
ds_remote <- data.frame(value = names(ds_remote), frequency = as.numeric(ds_remote))
# Membuat bar chart
ggplot(ds_remote, aes(x = value, y = frequency, label = frequency)) +
geom_bar(stat = "identity", fill = "skyblue", 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
ds$experience_level <- factor(ds$experience_level, levels = c("EN", "MI", "SE", "EX"))
ggplot(data = ds, aes(x = experience_level, y = salary_in_usd, fill = experience_level , color=experience_level)) +
geom_boxplot(color="black") +
theme()+
scale_fill_manual(values = c("#711DB0", "#C21292", "#EF4040", "#FFA732")) +
labs(x = NULL, y = "Besar Gaji (US Dollar")
Keterangan - EN: Entry-level - MI: Mid-level - SE: Senior-level - EX: Executive-level
Berdasarkan sebaran boxplot 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 = ds) +
geom_density(aes(x = salary_in_usd, fill = as.factor(work_year)), color = "#FFF3CF", alpha = 0.5) +
labs(title = "Density Plot Sebaran Data Gaji Tiap Tahun",
x = "Gaji (US Dollar)",
y = "Jumlah")
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
ds_job <- table(ds$job_title)
ds_job <- data.frame(value = (names(ds_job)), frequency = as.numeric(ds_job))
# Memasukkan library treemap
library(treemap)
## Warning: package 'treemap' was built under R version 4.3.3
# Membuat treemap
treemap(ds_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(reshape2)
## Warning: package 'reshape2' was built under R version 4.3.2
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(ds[,c("company_size","experience_level")], company_size == "S")
exp.S <- exp.S[,"experience_level"]
exp.M <- subset(ds[,c("company_size","experience_level")], company_size == "M")
exp.M <- exp.M[,"experience_level"]
exp.L <- subset(ds[,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.