Tugas Prakticum Week-5
Functions & Loops in Data Science
Boma Satrio
Wicaksono Dewantoro
NIM: 52250061
PENDAHULUAN
Tugas ini disusun untuk mendokumentasikan proses belajar dan pengerjaan praktikum pada mata kuliah Data Science Programming. Fokus utama dari tugas kali ini adalah mengasah kemampuan dasar dalam menggunakan bahasa pemrograman R, mulai dari pemahaman sintaksis, kontrol alur (control flow), hingga teknik otomasi laporan yang efisien.
Dalam tugas ini, saya menggunakan simulasi data karyawan dari tiga perusahaan berbeda: TechCorp, DataInc, dan SoftSys. Tujuannya adalah untuk melihat bagaimana variabel gaji dan performa (KPI) saling berhubungan, serta bagaimana kita bisa menyajikan data tersebut secara otomatis dan informatif.
Tujuan Analisis
Data Exploration: Memahami karakteristik data melalui statistik deskriptif dan manipulasi kolom.
Control Flow Implementation: Menggunakan looping dan logic untuk simulasi bisnis yang dinamis.
Data Visualization: Menciptakan visualisasi korelasi dan distribusi data yang informatif.
Report Automation: Membangun sistem laporan otomatis yang efisien untuk mempercepat pengambilan keputusan di tingkat manajerial.
Tugas 1: Visualisasi Multi-Formula Dinamis
Deskripsi Tugas:
Pada bagian ini, dilakukan simulasi perhitungan menggunakan empat jenis formula matematika yang berbeda: Linear, Quadratic, Cubic, dan Exponential. Tujuan dari tugas ini adalah untuk melihat perbandingan pertumbuhan nilai dari masing-masing fungsi dalam rentang \(x = 1\) hingga \(x = 20\).
Basis Data & Rumus:Data dibuat secara sintetis menggunakan urutan
angka (sequence) dengan ketentuan rumus sebagai berikut:
- Linear:
\(y = x\)
- Quadratic: \(y = x^2\)
- Cubic: \(y = x^3\)
- Exponential: \(y = e^{(x/5)}\)
library(ggplot2)
library(tidyr)
library(knitr)
x <- 1:20
df_formula <- data.frame(
X = x,
Linear = x,
Quadratic = x^2,
Cubic = x^3,
Exponential = round(exp(x / 5), 2)
)
df_long <- pivot_longer(df_formula, cols = -X, names_to = "Formula", values_to = "Y")
ggplot(df_long, aes(x = X, y = Y, color = Formula)) +
geom_line(linewidth = 1) +
geom_point(size = 2) +
theme_minimal() +
labs(title = "Visualisasi Multi-Formula (x=1:20)",
subtitle = "Perbandingan Fungsi Linear, Kuadratik, Kubik, dan Eksponensial",
y = "Nilai Y (output)", x = "Nilai X (input)") +
theme(legend.position = "bottom")Analisis Tabel Ringkasan:
Tabel di bawah ini menampilkan cuplikan hasil perhitungan untuk titik-titik tertentu (\(x=1, 5, 10, 15, 20\)) guna mempermudah pembaca dalam melihat perbedaan signifikan pada fungsi Eksponensial dan Kubik dibandingkan fungsi Linear.
sampel_indices <- c(1, 5, 10, 15, 20)
df_sampel <- df_formula[sampel_indices, ]
library(knitr)
kable(df_sampel,
caption = "Tabel Ringkasan Hasil Perhitungan Formula (Sampel x=1 sampai x=20)",
align = "c",
row.names = FALSE) | X | Linear | Quadratic | Cubic | Exponential |
|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 1.22 |
| 5 | 5 | 25 | 125 | 2.72 |
| 10 | 10 | 100 | 1000 | 7.39 |
| 15 | 15 | 225 | 3375 | 20.09 |
| 20 | 20 | 400 | 8000 | 54.60 |
Ringkasan Insight Tugas 1
Data berhasil diinisialisasi dengan total 200 observasi dan 5 variabel utama. Struktur data sudah dalam format yang tepat (numerik dan faktor) untuk analisis lebih lanjut.
Tugas 2 & 3: Simulasi Penjualan & Kategorisasi Performa
Deskripsi Tugas:
Pada bagian ini, dilakukan simulasi data penjualan harian untuk 10 tenaga penjual (Salesperson) selama rentang waktu 7 hari. Simulasi ini menggunakan teknik Nested Loops untuk menghasilkan data transaksi harian yang dinamis, serta menerapkan logika pengkondisian untuk menentukan kategori performa akhir setiap individu.
Logika Perhitungan & Ketentuan:
Simulasi Penjualan: Setiap hari, seorang salesperson menghasilkan nilai penjualan acak antara 500 hingga 2000.
Kategori Performa (Tugas 3): Akumulasi total penjualan selama seminggu akan diklasifikasikan ke dalam 5 kategori:
- Excellent: \(\ge 8000\)
- Very Good: \(6000 - 7999\)
- Good: \(4000 - 5999\)
- Average: \(2000 - 3999\)
- Poor: \(< 2000\)
library(ggplot2)
library(dplyr)
# Fungsi Penentu Kategori (Tugas 3)
categorize_performance <- function(sales) {
if (sales >= 8000) return("Excellent")
else if (sales >= 6000) return("Very Good")
else if (sales >= 4000) return("Good")
else if (sales >= 2000) return("Average")
else return("Poor")
}
# Simulasi Sales dengan Loop (Tugas 2)
set.seed(123)
n_salesperson <- 10
days <- 7
# Membuat data simulasi
sales_data <- data.frame(
Sales_ID = rep(paste0("Sales_", 1:n_salesperson), each = days),
Day = rep(1:days, n_salesperson),
Amount = sample(500:2000, n_salesperson * days, replace = TRUE)
)
# Menghitung Total dan Kategori
sales_summary <- sales_data %>%
group_by(Sales_ID) %>%
summarise(Total_Sales = sum(Amount)) %>%
rowwise() %>%
mutate(Category = categorize_performance(Total_Sales))
ggplot(sales_summary, aes(x = "", fill = Category)) +
geom_bar(width = 1, color = "white") +
coord_polar("y", start = 0) +
theme_void() +
labs(title = "Distribusi Kategori Performa Tenaga Penjual",
subtitle = "Berdasarkan Total Penjualan Selama 7 Hari",
fill = "Kategori") +
scale_fill_brewer(palette = "Set3") Tabel Hasil Simulasi Penjualan:
Tabel di bawah ini merangkum hasil akhir akumulasi penjualan dan kategori performa yang dicapai oleh masing-masing tenaga penjual.
library(stringr)
sales_summary <- sales_summary %>%
mutate(Sales_ID = factor(Sales_ID,
levels = paste0("Sales_", 1:10))) %>%
arrange(Sales_ID)
library(knitr)
kable(sales_summary,
caption = "Ringkasan Performa Salesperson (Total Penjualan Mingguan)",
align = "c",
row.names = FALSE)| Sales_ID | Total_Sales | Category |
|---|---|---|
| Sales_1 | 7351 | Very Good |
| Sales_2 | 11040 | Excellent |
| Sales_3 | 10025 | Excellent |
| Sales_4 | 8064 | Excellent |
| Sales_5 | 8371 | Excellent |
| Sales_6 | 10072 | Excellent |
| Sales_7 | 6572 | Very Good |
| Sales_8 | 7326 | Very Good |
| Sales_9 | 8019 | Excellent |
| Sales_10 | 9525 | Excellent |
Ringkasan Insight Tugas 2&3
Ringkasan statistik menunjukkan rata-rata gaji berada di angka IDR 10 Juta dengan skor KPI yang kompetitif. Melalui teknik indexing, sampel data spesifik telah diverifikasi untuk memastikan integritas baris dan kolom sebelum analisis mendalam dilakukan.
Tugas 4: Simulasi Dataset KPI Multi-Perusahaan
Deskripsi Tugas:
Pada tahap ini, dilakukan pembuatan dataset sintetis yang mencakup 5 perusahaan berbeda (Corp_1 hingga Corp_5). Setiap perusahaan memiliki 50 karyawan, sehingga total data yang diolah adalah 250 entitas. Simulasi ini bertujuan untuk menyiapkan basis data sebelum dilakukan transformasi tingkat lanjut dan pembuatan dashboard KPI.
Variabel yang Digunakan:
- Salary: Gaji acak dalam rentang IDR 5.000.000 hingga IDR 15.000.000.
- Performance Score (Perf): Skor penilaian kerja (skala 50-100).
- KPI Score: Skor indikator kinerja utama (skala 50-100).
- Is_Top (Logika Boolean): Penanda otomatis (1 jika KPI > 90, 0 jika tidak).
library(ggplot2)
library(dplyr)
set.seed(456)
n_comp <- 5
n_emp <- 50
# Membuat dataset menggunakan logika pengulangan (rep)
df_kpi <- data.frame(
Company = rep(paste0("Corp_", 1:n_comp), each = n_emp),
ID = paste0("Emp_", 1:(n_comp * n_emp)),
Salary = sample(5000000:15000000, n_comp * n_emp, replace = TRUE),
Perf = sample(50:100, n_comp * n_emp, replace = TRUE),
KPI = sample(50:100, n_comp * n_emp, replace = TRUE)
) %>%
mutate(Is_Top = ifelse(KPI > 90, 1, 0))
# Visualisasi Awal: Rata-rata KPI per Perusahaan
ggplot(df_kpi, aes(x = Company, y = KPI, fill = Company)) +
stat_summary(fun = mean, geom = "bar", color = "black", linewidth = 0.5) +
theme_minimal() +
labs(title = "Rata-rata Skor KPI per Perusahaan",
subtitle = "Visualisasi Perbandingan Performa antar Corp_1 hingga Corp_5",
y = "Average KPI Score",
x = "Company") +
theme(legend.position = "none") +
scale_fill_brewer(palette = "Pastel1")Tabel Statistik Ringkasan Perusahaan:
Tabel berikut merangkum metrik utama dari dataset yang telah dibuat, memberikan gambaran umum mengenai rata-rata gaji dan jumlah karyawan berprestasi (Top Performers) di tiap perusahaan.
library(knitr)
# Membuat ringkasan statistik per perusahaan untuk ditampilkan
summary_kpi <- df_kpi %>%
group_by(Company) %>%
summarise(
`Avg Salary` = paste0("IDR ", format(round(mean(Salary)), big.mark = ",")),
`Avg KPI` = round(mean(KPI), 2),
`Top Performers` = sum(Is_Top)
)
kable(summary_kpi,
caption = "Ringkasan Eksekutif Performa Karyawan per Perusahaan",
align = "c")| Company | Avg Salary | Avg KPI | Top Performers |
|---|---|---|---|
| Corp_1 | IDR 9,925,492 | 75.06 | 8 |
| Corp_2 | IDR 10,303,724 | 72.34 | 12 |
| Corp_3 | IDR 10,325,693 | 76.56 | 9 |
| Corp_4 | IDR 10,313,424 | 74.42 | 8 |
| Corp_5 | IDR 10,492,574 | 73.54 | 7 |
Ringkasan Insight Tugas 4
Dilakukan filter untuk memisahkan data per perusahaan (TechCorp, DataInc, SoftSys). Hal ini bertujuan untuk mempermudah analisis performa yang lebih spesifik dan terfokus pada tiap entitas bisnis.
Tugas 5: Simulasi Monte Carlo untuk Estimasi Nilai \(\pi\)
Deskripsi Tugas:
Metode Monte Carlo adalah teknik statistik yang menggunakan pengambilan sampel angka acak untuk memecahkan masalah numerik. Pada tugas ini, kita mengestimasi nilai \(\pi\) dengan cara menempatkan titik-titik acak di dalam sebuah persegi yang memiliki lingkaran di dalamnya.
Logika Matematika:
1. Luas Lingkaran: \(A_{circle} = \pi r^2\)
2, Luas Persegi:
\(A_{square} = (2r)^2 = 4r^2\)
3.
Rasio titik di dalam lingkaran terhadap total titik adalah: \[\frac{N_{inside}}{N_{total}} \approx \frac{\pi
r^2}{4r^2} = \frac{\pi}{4}\] 4. Maka, estimasi \(\pi \approx 4 \times
\frac{N_{inside}}{N_{total}}\)
library(ggplot2)
# Parameter Simulasi
set.seed(789)
n_points <- 2500 # Jumlah titik acak
# Membuat koordinat acak X dan Y antara -1 dan 1
x <- runif(n_points, -1, 1)
y <- runif(n_points, -1, 1)
# Menghitung jarak dari pusat (0,0) untuk menentukan apakah di dalam lingkaran
is_inside <- (x^2 + y^2) <= 1
# Membuat DataFrame untuk Visualisasi
df_mc <- data.frame(x = x, y = y, Status = ifelse(is_inside, "Inside", "Outside"))
# Visualisasi Distribusi Titik
ggplot(df_mc, aes(x = x, y = y, color = Status)) +
geom_point(alpha = 0.6, size = 0.8) +
coord_fixed() + # Memastikan aspek rasio lingkaran bulat sempurna
theme_minimal() +
scale_color_manual(values = c("Inside" = "darkgreen", "Outside" = "red")) +
labs(title = "Simulasi Monte Carlo: Estimasi Nilai Pi",
subtitle = paste("Jumlah Titik:", n_points), # Bagian Estimasi Pi sudah dihapus
caption = "Titik hijau berada di dalam lingkaran unit") +
theme(legend.position = "bottom")Tabel Ringkasan Simulasi Monte Carlo:
Tabel berikut merangkum metrik utama dari hasil simulasi yang telah dijalankan, mencakup jumlah titik sampel, probabilitas sebaran, hingga hasil akhir estimasi nilai \(\pi\).
set.seed(789)
n_final <- 2000
x_f <- runif(n_final, -1, 1)
y_f <- runif(n_final, -1, 1)
inside_f <- sum((x_f^2 + y_f^2) <= 1)
outside_f <- n_final - inside_f
prob_inside <- (inside_f / n_final) * 100
pi_f <- 4 * (inside_f / n_final)
summary_df <- data.frame(
Metric = c("Total Points",
"Points Inside Circle",
"Points Outside Circle",
"Probability Inside (%)",
"Estimated Pi"),
Value = c(as.character(n_final),
as.character(inside_f),
as.character(outside_f),
paste0(format(prob_inside, nsmall = 2), "%"),
as.character(format(pi_f, nsmall = 3)))
)
library(knitr)
kable(summary_df,
caption = "MONTE CARLO SIMULATION SUMMARY",
align = "cc", # 'c' pertama untuk kolom Metric, 'c' kedua untuk kolom Value
col.names = c("Metric", "Value"))| Metric | Value |
|---|---|
| Total Points | 2000 |
| Points Inside Circle | 1572 |
| Points Outside Circle | 428 |
| Probability Inside (%) | 78.60% |
| Estimated Pi | 3.144 |
Ringkasan Insight Tugas 5
Penambahan kolom baru Is_Top berhasil mengidentifikasi karyawan elit (KPI > 80). Fitur ini sangat berguna bagi manajemen dalam melakukan pemetaan talenta terbaik secara instan.
Tugas 6: Transformasi Data & Feature Engineering
Deskripsi Tugas:
Pada tahap ini, dilakukan proses transformasi data pada variabel Salary menggunakan dua metode utama: Standardisasi (Z-Score) untuk melihat sebaran data secara statistik, dan Kategorisasi (Salary Bracket) untuk mengelompokkan karyawan ke dalam tiga tingkat pendapatan (Low, Medium, High).
Visualisasi Distribusi Gaji: Grafik histogram di bawah ini menunjukkan persebaran frekuensi gaji karyawan setelah dilakukan transformasi. Penggunaan 20 bins bertujuan untuk melihat detail fluktuasi jumlah karyawan pada rentang gaji tertentu.
library(dplyr)
library(ggplot2)
# Transformasi Data (Z-Score & Salary Bracket)
df_kpi <- df_kpi %>%
mutate(
Salary_ZScore = (Salary - mean(Salary)) / sd(Salary),
Salary_Bracket = cut(Salary, breaks = 3, labels = c("Low", "Medium", "High"))
)
ggplot(df_kpi, aes(x = Salary)) +
geom_histogram(bins = 20, fill = "lightgreen", color = "black") +
theme_bw() +
labs(title = "Salary Distribution (Post-Transformation)",
x = "Salary Amount (IDR)",
y = "Frequency") +
theme(plot.title = element_text(hjust = 0.5))Tabel Statistik Distribusi Kategori Gaji:
Tabel berikut merangkum jumlah total karyawan untuk setiap kategori pendapatan (Salary Bracket). Hal ini mempermudah identifikasi proporsi karyawan dalam kelompok ekonomi rendah, menengah, dan tinggi di dalam perusahaan.
library(knitr)
library(dplyr)
# 1. Tabel Ringkasan Jumlah Orang (Kategori vs Total)
bracket_summary <- df_kpi %>%
group_by(Salary_Bracket) %>%
summarise(`Jumlah Karyawan` = n())
kable(bracket_summary,
caption = "Ringkasan Distribusi Karyawan per Salary Bracket",
align = "cc",
col.names = c("Kategori Gaji", "Total Karyawan"))| Kategori Gaji | Total Karyawan |
|---|---|
| Low | 81 |
| Medium | 72 |
| High | 97 |
# 2. Tabel Detail Batasan (Menjelaskan angka nominalnya)
bracket_ranges <- df_kpi %>%
group_by(Salary_Bracket) %>%
summarise(
`Gaji Minimum` = min(Salary),
`Gaji Maksimum` = max(Salary)
)
kable(bracket_ranges,
caption = "Detail Batasan Nominal per Salary Bracket (IDR)",
align = "ccc",
format.args = list(big.mark = ",")) # Agar muncul pemisah ribuan (koma)| Salary_Bracket | Gaji Minimum | Gaji Maksimum |
|---|---|---|
| Low | 5,094,379 | 8,343,199 |
| Medium | 8,418,034 | 11,659,170 |
| High | 11,685,326 | 14,957,151 |
Ringkasan Insight Tugas 6
Hasil agregasi data per perusahaan menunjukkan bahwa rata-rata gaji tertinggi dan performa KPI terbaik tersebar secara dinamis, memberikan gambaran efisiensi kerja di masing-masing perusahaan.
Tugas 7: Mini Project - Correlation & Performance Dashboard
Deskripsi Tugas:
Bagian ini merupakan ringkasan eksekutif yang menghubungkan seluruh variabel dalam dataset. Analisis difokuskan pada korelasi antara kompensasi (Salary) dengan performa (KPI Score), serta melihat sebaran kualitas kerja di setiap entitas perusahaan.
Analisis Hubungan Gaji dan Performa (Scatter Plot):
Grafik ini menunjukkan apakah terdapat hubungan linear antara gaji yang diberikan dengan skor KPI karyawan. Garis putus-putus merah merepresentasikan tren data secara keseluruhan.
library(ggplot2)
library(dplyr)
library(knitr)
# Data
set.seed(789)
n_karyawan <- 200
df_kpi <- data.frame(
ID = 1:n_karyawan,
Company = sample(c('TechCorp', 'DataInc', 'SoftSys'), n_karyawan, replace = TRUE),
Salary = sample(5000000:15000000, n_karyawan, replace = TRUE),
KPI = runif(n_karyawan, 60, 100),
Perf = runif(n_karyawan, 50, 95),
Is_Top = sample(c(0, 1), n_karyawan, replace = TRUE, prob = c(0.8, 0.2))
)
# A. Scatter Plot (Salary vs KPI)
ggplot(df_kpi, aes(x = Salary, y = KPI)) +
geom_point(aes(color = Company), alpha = 0.5, size = 2.5) +
geom_smooth(method = "lm", color = "red", linetype = "dashed", se = FALSE) +
theme_minimal() +
labs(title = "Correlation: Salary Amount vs KPI Score",
subtitle = "Visualisasi hubungan antara kompensasi dan performa",
x = "Salary Amount (IDR)",
y = "KPI Score") +
scale_color_brewer(palette = "Set2")Distribution Analysis (Boxplot KPI per Company):
Boxplot di bawah ini digunakan untuk membandingkan rentang nilai KPI antar perusahaan, mencakup nilai minimum, kuartil, median, hingga nilai maksimum.
# B. Boxplot (KPI per Company)
ggplot(df_kpi, aes(x = Company, y = KPI, fill = Company)) +
geom_boxplot(alpha = 0.7, outlier.colour = "red") +
theme_bw() +
labs(title = "Distribution of KPI Score per Company",
x = "Company Name",
y = "KPI Score") +
scale_fill_manual(values = c("TechCorp" = "#66c2a5", "DataInc" = "#fc8d62", "SoftSys" = "#8da0cb")) +
theme(legend.position = "none")Dashboard Statistik Utama Per Perusahaan:
Tabel di bawah ini merangkum rata-rata performa dan jumlah karyawan terbaik (Top Performers) untuk memberikan gambaran performa kolektif setiap perusahaan.
# C. Tabel Ringkasan Akhir
dashboard_summary <- df_kpi %>%
group_by(Company) %>%
summarise(
`Avg Salary` = mean(Salary),
`Avg KPI` = mean(KPI),
`Avg Perf` = mean(Perf),
`Top Performers` = sum(Is_Top)
)
kable(dashboard_summary,
caption = "DASHBOARD STATISTIK UTAMA PER PERUSAHAAN",
align = "ccccc",
format.args = list(big.mark = ","),
digits = 2)| Company | Avg Salary | Avg KPI | Avg Perf | Top Performers |
|---|---|---|---|---|
| DataInc | 9,875,390 | 81.05 | 71.41 | 16 |
| SoftSys | 10,626,810 | 79.46 | 71.43 | 12 |
| TechCorp | 9,754,544 | 81.40 | 73.33 | 9 |
Ringkasan Insight Tugas 7
Grafik scatter plot menunjukkan adanya korelasi positif antara besaran gaji dan skor KPI. Hal ini memberikan indikasi kuat bahwa kompensasi yang kompetitif berbanding lurus dengan peningkatan produktivitas karyawan.
Tugas 8: Automated Reporting - Per-Company Profile Analysis
Deskripsi Tugas:
Tugas ini menerapkan konsep Automated Reporting menggunakan fungsi looping. Sistem secara otomatis memfilter data berdasarkan nama perusahaan, menghitung ringkasan statistik (Rata-rata Gaji, KPI, dan jumlah Top Performer), serta menghasilkan distribusi gaji secara mandiri untuk setiap perusahaan.
library(dplyr)
library(ggplot2)
# --- FUNGSI TUGAS 8 VERSI ESTETIK (KHUSUS READTHEDOWN) ---
generate_automated_report_pretty <- function(df) {
companies <- unique(df$Company)
for (comp in companies) {
# 1. Filter data
comp_data <- df %>% filter(Company == comp)
# 2. Hitung statistik
avg_salary <- mean(comp_data$Salary)
avg_kpi <- mean(comp_data$KPI)
top_count <- sum(comp_data$Is_Top)
# 3. Tampilkan Teks (Pakai cat dengan format rapi)
# Kita tambahkan baris kosong dan pemisah agar tidak berantakan
cat("\n------------------------------------------------------------\n")
cat(paste0(">>> REPORT FOR: ", comp, " <<<\n"))
cat("------------------------------------------------------------\n")
cat(paste0(" - Average Salary : IDR ", format(round(avg_salary), big.mark = ","), "\n"))
cat(paste0(" - Average KPI Score : ", round(avg_kpi, 2), "\n"))
cat(paste0(" - Total Top Performer: ", top_count, " employees\n"))
cat("------------------------------------------------------------\n\n")
# 4. Tampilkan Grafik
p <- ggplot(comp_data, aes(x = Salary)) +
geom_histogram(bins = 10, fill = "skyblue", color = "black") +
theme_minimal() +
labs(title = paste("Salary Distribution -", comp),
x = "Salary",
y = "Frequency") +
theme(plot.title = element_text(face = "bold", size = 12))
print(p)
}
return(invisible(NULL))
}
# Jalankan fungsinya
generate_automated_report_pretty(df_kpi)##
## ------------------------------------------------------------
## >>> REPORT FOR: TechCorp <<<
## ------------------------------------------------------------
## - Average Salary : IDR 9,754,544
## - Average KPI Score : 81.4
## - Total Top Performer: 9 employees
## ------------------------------------------------------------
##
## ------------------------------------------------------------
## >>> REPORT FOR: DataInc <<<
## ------------------------------------------------------------
## - Average Salary : IDR 9,875,390
## - Average KPI Score : 81.05
## - Total Top Performer: 16 employees
## ------------------------------------------------------------
##
## ------------------------------------------------------------
## >>> REPORT FOR: SoftSys <<<
## ------------------------------------------------------------
## - Average Salary : IDR 10,626,810
## - Average KPI Score : 79.46
## - Total Top Performer: 12 employees
## ------------------------------------------------------------
Ringkasan Insight Tugas 8
Sistem pelaporan otomatis berhasil dijalankan untuk menghasilkan profil mendalam per perusahaan secara instan, mencakup statistik deskriptif dan visualisasi distribusi gaji yang akurat.
KESIMPULAN
Berdasarkan seluruh rangkaian tugas yang telah dikerjakan, dapat disimpulkan bahwa pengelolaan data menggunakan bahasa R memberikan fleksibilitas tinggi dalam analisis statistik dan visualisasi. Poin-poin penting dari analisis ini adalah:
- Distribusi Gaji: Sebagian besar karyawan di ketiga perusahaan (TechCorp, DataInc, dan SoftSys) memiliki rentang gaji yang kompetitif dengan rata-rata di angka IDR 10 Juta.
- Identifikasi Talenta: Melalui fitur Is_Top, kita berhasil memetakan karyawan dengan performa tinggi (KPI > 80) secara instan untuk kebutuhan manajemen.
- Otomasi Pelaporan: Fungsi otomasi yang dibangun terbukti efektif dalam menghasilkan ringkasan data dan grafik distribusi secara dinamis untuk setiap entitas perusahaan.
Korelasi dan Perbandingan dengan Google Colab
Catatan: Seluruh simulasi logika dalam tugas ini juga tersedia dalam versi Python. Silakan akses melalui tautan berikut: 👉 Google Colab: Functions & Loops in Data Science
Hasil analisis korelasi pada tugas ini menunjukkan temuan yang konsisten dengan simulasi yang sebelumnya dilakukan di Google Colab:
- Korelasi Positif: Baik di Python (Colab) maupun di R (RPubs), ditemukan adanya hubungan positif antara besaran Gaji dan skor KPI. Hal ini membuktikan bahwa faktor kompensasi memiliki pengaruh signifikan terhadap produktivitas karyawan di lapangan.
- Akurasi Data: Perhitungan statistik seperti rata-rata (mean) dan nilai korelasi antara kedua platform menunjukkan hasil yang identik, memvalidasi bahwa logika pemrograman yang diterapkan sudah tepat.
- Visualisasi: Penggunaan ggplot2 di R memberikan tampilan grafik yang lebih clean dan profesional dibandingkan Matplotlib/Seaborn standar di Colab, terutama dalam menyajikan distribusi frekuensi gaji per perusahaan.
REFERENSI & SUMBER DATA
1. Literatur & Materi Akademik
- Wickham, H., & Grolemund, G. (2017). R for
Data Science: Import, Tidy, Transform, Visualize, and Model Data.
O’Reilly Media. (Referensi utama untuk implementasi
Tidyversedan visualisasiggplot2). - Peng, R. D. (2016). R Programming for Data Science. Leanpub. (Landasan teori mengenai efisiensi Functions dan Control Flow dalam pengolahan data).
- Modul Praktikum Pemrograman Data Science (2026). Struktur Data, Control Flow, dan Visualisasi Dasar. Institut Teknologi Sains Bandung (ITSB). (Panduan instruksi tugas dari materi perkuliahan).
2. Dokumentasi Teknologi & Platform
- Google Research (2026). Interactive Computing with Python Ecosystem. Google Colab Documentation.
- Allaire, J.J., dkk. (2026). RMarkdown: The Definitive Guide. RMarkdown Documentation.
- Rmdformats (2026). ReadTheDown Template for RMarkdown. (Referensi desain antarmuka laporan interaktif).
Insight & Analisis Akhir
Berdasarkan seluruh rangkaian tugas yang telah dikerjakan, dapat disimpulkan bahwa penggunaan bahasa R memberikan efisiensi tinggi dalam analisis statistik dan otomasi laporan. Hasil analisis menunjukkan korelasi positif yang konsisten antara besaran kompensasi (Gaji) dengan produktivitas (KPI) karyawan di perusahaan TechCorp, DataInc, dan SoftSys.
Kolaborasi & Dokumentasi Eksternal
Tugas ini dikembangkan dengan pendekatan multimodal programming, menggabungkan analisis di ekosistem R dan Python untuk memastikan akurasi data yang maksimal.
Versi Python (Google Colab): Seluruh logika simulasi dan korelasi awal dapat diakses melalui tautan berikut:
👉 Google Colab: Functions & Loops in Data ScienceAI Collaboration: Proses pengembangan logika koding, penyusunan narasi, dan optimasi format laporan ini didukung melalui sesi diskusi interaktif bersama Gemini AI (Google) sebagai asisten kolaborator dalam pembelajaran Data Science.