Data Science Programming
Syntax and Control Flow
Praktikum
2.5.1 Tujuan
Memahami dan menerapkan pernyataan kondisional (,,).
if if-else if-elif-elseTerapkan 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:
Menggunakan if-elif-else untuk menghitung bonus berdasarkan performa karyawan.
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. |