Data Science Programming

Syntax and Control Flow


Praktikum

2.5.1 Tujuan

  1. Memahami dan menerapkan pernyataan kondisional (,,). if if-else if-elif-else

  2. Terapkan loop (,,,) untuk menganalisis himpunan data. for loop while loop break continue

Gunakan himpunan data dummy berikut:

ID Nama Usia Gaji Posisi Performa
1 Bagas 25 5000 Staff 🟡 Baik
2 Joan 30 7000 Supervisor 🟢 Sangat Baik
3 Alya 27 6500 Staff 🔴 Rata-rata
4 Dwi 35 10000 Manajer 🟡 Baik
5 Nabil 40 12000 Direktur 🟢 Sangat Baik
# Membuat dataset gaji dan kinerja karyawan
data_karyawan <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),  # Nama karyawan
  Gaji = c(5000, 7000, 6500, 10000, 12000),  # Gaji masing-masing karyawan
  Kinerja = c("Baik", "Sangat baik", "Rata-rata", "Baik", "Sangat baik")  # Kinerja karyawan
)

# Membuat dataset posisi karyawan
data_posisi <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),  # Nama karyawan
  Posisi = c("Staf", "Pengawas", "Staf", "Manajer", "Direktur")  # Posisi masing-masing karyawan
)

# Menggabungkan kedua dataset berdasarkan Nama
merged_data <- merge(data_karyawan, data_posisi, by = "Nama")  # Menggabungkan berdasarkan kolom Nama sebagai kunci utama

# Menampilkan dataset hasil gabungan
print(merged_data)  # Mencetak hasil dataset yang telah digabung
##    Nama  Gaji     Kinerja   Posisi
## 1  Alya  6500   Rata-rata     Staf
## 2 Bagas  5000        Baik     Staf
## 3   Dwi 10000        Baik  Manajer
## 4  Joan  7000 Sangat baik Pengawas
## 5 Nabil 12000 Sangat baik Direktur

2.5.2 Pernyataan Bersyarat

Bonus karyawan ditentukan berdasarkan performa, dengan ketentuan berikut:
- Sangat Baik → 20% dari gaji
- Baik → 10% dari gaji
- Rata-rata → 5% dari gaji

Langkah Kerja:

  1. Menggunakan if-elif-else untuk menghitung bonus berdasarkan performa karyawan.

  2. Menampilkan hasil dalam format berikut:

    "Nama: Bagas, Bonus: 500"
# Bikin data karyawan dalam bentuk dataframe
karyawan <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),  # Nama karyawan
  Gaji = c(5000, 7000, 6500, 10000, 12000),  # Gaji masing-masing karyawan
  Performa = c("Baik", "Sangat Baik", "Rata-rata", "Baik", "Sangat Baik")  # Kategori performa
)

# Loop buat ngitung bonus tiap karyawan berdasarkan performanya
for (k in 1:nrow(karyawan)) {  
  if (karyawan$Performa[k] == "Sangat Baik") {  # Kalo performanya "Sangat Baik", bonusnya 20% dari gaji
    bonus <- karyawan$Gaji[k] * 0.2  
  } else if (karyawan$Performa[k] == "Baik") {  # Kalo "Baik", bonusnya 10% dari gaji
    bonus <- karyawan$Gaji[k] * 0.1  
  } else {  # Kalau "Rata-rata", bonusnya 5% dari gaji
    bonus <- karyawan$Gaji[k] * 0.05  
  }
  
  # Nampilin hasilnya biar bisa dicek
  cat("Nama:", karyawan$Nama[k], ", Bonus:", as.integer(bonus), "\n")  
}
## Nama: Bagas , Bonus: 500 
## Nama: Joan , Bonus: 1400 
## Nama: Alya , Bonus: 325 
## Nama: Dwi , Bonus: 1000 
## Nama: Nabil , Bonus: 2400

For loop while loop break Continue

FOR LOOP (Gaji > 6000)

# Fungsi untuk menghitung bonus berdasarkan kinerja
hitung_bonus <- function(gaji, kinerja) {
  if (kinerja == "Sangat baik") {
    return(gaji * 0.2)
  } else if (kinerja == "Baik") {
    return(gaji * 0.1)
  } else {  # Kinerja "Rata-rata"
    return(gaji * 0.05)
  }
}

# Menyimpan hasil perhitungan bonus dalam dataframe tanpa menampilkannya di output
data_karyawan$Bonus <- mapply(hitung_bonus, data_karyawan$Gaji, data_karyawan$Kinerja)

# Menampilkan karyawan dengan gaji di atas 6000
cat("\n=== Karyawan dengan Gaji > 6000 ===\n")
## 
## === Karyawan dengan Gaji > 6000 ===
karyawan_gaji_tinggi <- subset(data_karyawan, Gaji > 6000)
print(karyawan_gaji_tinggi[, c("Nama", "Gaji")])
##    Nama  Gaji
## 2  Joan  7000
## 3  Alya  6500
## 4   Dwi 10000
## 5 Nabil 12000

WHILE LOOP ( Karyawan -> Manajer)

# Membuat data frame karyawan
karyawan <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
  Gaji = c(5000, 7000, 6500, 10000, 12000),
  Performa = c("Baik", "Sangat Baik", "Rata-rata", "Baik", "Sangat Baik"),
  Posisi = c("Staff", "Supervisor", "Staff", "Manajer", "Direktur"),
  stringsAsFactors = FALSE
)

# Inisialisasi variabel indeks
k <- 1

# Loop while untuk menampilkan karyawan sampai menemukan Manajer
while (k <= nrow(karyawan)) {
  cat("Nama:", karyawan$Nama[k], ", Posisi:", karyawan$Posisi[k], "\n")
  
  # Jika posisi adalah "Manajer", loop berhenti
  if (karyawan$Posisi[k] == "Manajer") {
    break
  }
  
  # Tambah indeks
  k <- k + 1
}
## Nama: Bagas , Posisi: Staff 
## Nama: Joan , Posisi: Supervisor 
## Nama: Alya , Posisi: Staff 
## Nama: Dwi , Posisi: Manajer

BREAK (Gaji > 10.000)

# Membuat daftar karyawan dengan nama, gaji, performa, dan posisi
karyawan <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
  Gaji = c(5000, 7000, 6500, 10000, 12000),
  Performa = c("Baik", "Sangat Baik", "Rata-rata", "Baik", "Sangat Baik"),
  Posisi = c("Staff", "Supervisor", "Staff", "Manajer", "Direktur")
)

# Loop untuk menampilkan karyawan sampai menemukan gaji di atas 10.000
for (k in 1:nrow(karyawan)) {
  # Jika gaji lebih dari 10.000, hentikan loop sebelum mencetak
  if (karyawan$Gaji[k] > 10000) {
    break
  }
  
  cat("Nama:", karyawan$Nama[k], ", Gaji:", karyawan$Gaji[k], "\n")
}
## Nama: Bagas , Gaji: 5000 
## Nama: Joan , Gaji: 7000 
## Nama: Alya , Gaji: 6500 
## Nama: Dwi , Gaji: 10000

CONTINUE (Rata-rata)

Output yang diharapkan:
Nama: Bagas, Performa: Baik Nama: Joan, Performa: Sangat Baik Nama: Dwi, Performa: Baik Nama: Nabil, Performa: Sangat Baik (Alya dilewati karena performanya "Rata-rata")

# Membuat data frame karyawan
karyawan <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
  Gaji = c(5000, 7000, 6500, 10000, 12000),
  Performa = c("Baik", "Sangat Baik", "Rata-rata", "Baik", "Sangat Baik"),
  Posisi = c("Staff", "Supervisor", "Staff", "Manajer", "Direktur"),
  stringsAsFactors = FALSE
)

# Mapping dari bahasa Indonesia ke bahasa Inggris untuk performa
performa_mapping <- list(
  "Baik" = "Good",
  "Sangat Baik" = "Very Good"
)

# Loop untuk menampilkan hasil sesuai format yang diinginkan
for (k in 1:nrow(karyawan)) {
  if (karyawan$Performa[k] == "Rata-rata") {
    next  # Melewati Alya karena performanya "Rata-rata"
  }
  
  # Mengonversi performa dari bahasa Indonesia ke bahasa Inggris
  performa_en <- performa_mapping[[karyawan$Performa[k]]]
  
  # Menampilkan hasil dengan format yang diinginkan
  cat("Name:", karyawan$Nama[k], ", Performance:", performa_en, "\n")
}
## Name: Bagas , Performance: Good 
## Name: Joan , Performance: Very Good 
## Name: Dwi , Performance: Good 
## Name: Nabil , Performance: Very Good
# Menambahkan catatan tentang Alya
cat("(Alya is skipped because the performance is \"Rata-rata\")\n")
## (Alya is skipped because the performance is "Rata-rata")

📌Kesimpulan

🔢 No 📋 Deskripsi Konsep 📖 Penjelasan Umum 📊 Implementasi dalam R
1️⃣ Pernyataan Kondisional (if-elif-else) Digunakan untuk mengambil keputusan otomatis, misalnya menentukan bonus karyawan berdasarkan performa. Menggunakan data frame, lalu for loop dengan if-else untuk menghitung bonus dan mencetak hasil menggunakan cat().
2️⃣ Perulangan (for dan while) Memproses daftar karyawan secara berulang, seperti menampilkan data karyawan dengan gaji tertentu. Menggunakan for loop dalam data frame, lalu mencetak data jika gaji lebih dari 6000 menggunakan cat().
3️⃣ Break (Menghentikan Loop) Menghentikan perulangan saat kondisi tertentu terpenuhi, misalnya saat menemukan karyawan dengan jabatan “Manajer”. Menggunakan while loop dalam data frame, lalu break jika posisi adalah “Manajer”.
4️⃣ Continue (Melewati Iterasi Tertentu) Melewati iterasi tertentu dalam loop tanpa menghentikan proses secara keseluruhan. Menggunakan for loop, lalu next jika performa adalah “Rata-rata”.
5️⃣ Makna & Tujuan Kode Kontrol alur program memungkinkan otomatisasi pemrosesan data karyawan dengan lebih cepat dan efisien. Menggunakan for loop dalam data frame, lalu break jika gaji lebih dari 10.000 sebelum mencetak.
6️⃣ Kesimpulan Akhir Pemahaman tentang kontrol alur program sangat penting dalam Data Science untuk memproses data dalam skala besar secara efektif. Memanfaatkan kombinasi perulangan, kondisi, break, dan continue untuk pengolahan data yang lebih optimal.

📚 Referensi

No Penulis Judul Sumber Tautan
1 Bakti Siregar, M.Sc., CD Syntax and Control Flow Bookdown Link
2 Data Science Labs Syntax and Control Flow (Video) YouTube Link