SYNTAX AND CONTROL FLOW
Pratikum Conditional Statements and Loops in R
1. Tujuan
A. Memahami dan menerapkan pernyataan kondisional (if, if-else, if-elif-else).
B. Terapkan loop (for loop, while loop, break, continue) untuk menganalisis himpunan data.
Gunakan dataset dummy berikut ini
| PENGENAL | Nama | Usia | Gaji | Posisi | Pertunjukan |
|---|---|---|---|---|---|
| 1 | Bagas | 25 | 5000 | Staf | Bagus |
| 2 | Joan | 30 | 7000 | Pengawas | Sangat bagus |
| 3 | Alya | 27 | 6500 | Staf | Rata-rata |
| 4 | Dwi | 35 | 10000 | Manajer | Bagus |
| 5 | Nabil | 40 | 12000 | Direktur | Sangat bagus |
Tentukan tingkat bonus berdasarkan kinerja karyawan
Sangat Baik -20% dari gaji
Pengumpulan Data
Baik 10% dari gaji
Pembersihan Data
Rata-rata 5% dari gaji
Transformasi Data
# Dataset Dummy
karyawan <- data.frame(
Pengenal = c(1, 2, 3, 4, 5),# ID unik untuk setiap karyawan
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"), # Nama karyawan
Usia = c(25, 30, 27, 35, 40),# Usia karyawan
Gaji = c(5000, 7000, 6500, 10000, 12000),# Gaji karyawan dalam satuan tertentu
Posisi = c("Staf", "Pengawas", "Staf", "Manajer", "Direktur"),# Jabatan karyawan
Pertunjukan = c("Bagus", "Sangat bagus", "Rata-rata", "Bagus", "Sangat bagus")# Evaluasi kinerja
)
# Menentukan bonus berdasarkan kinerja
hitung_bonus <- function(gaji, kinerja) {
if (kinerja == "Sangat bagus") { # Jika kinerja sangat bagus, bonus 20% dari gaji
return(gaji * 0.2)
} else if (kinerja == "Bagus") { # Jika kinerja bagus, bonus 10% dari gaji
return(gaji * 0.1)
} else if (kinerja == "Rata-rata") { # Jika kinerja rata-rata, bonus 5% dari gaji
return(gaji * 0.05)
} else {# Jika kinerja di bawah rata-rata, tidak ada bonus
return(0)
}
}
# Menghitung dan mencetak bonus untuk setiap karyawan
for (i in 1:nrow(karyawan)) {
bonus <- hitung_bonus(karyawan$Gaji[i], karyawan$Pertunjukan[i]) # Menghitung bonus berdasarkan gaji dan kinerja
cat("Name:", karyawan$Nama[i], ", Bonus:", as.integer(bonus), "\n")# Menampilkan hasil perhitungan bonus
}## Name: Bagas , Bonus: 500
## Name: Joan , Bonus: 1400
## Name: Alya , Bonus: 325
## Name: Dwi , Bonus: 1000
## Name: Nabil , Bonus: 2400
1. Gunakan for loop untuk membuat daftar karyawan dengan gaji lebih dari 6000
Hasil yang Diharapkan:
Name: Joan, Salary: 7000
Name: Alya, Salary: 6500
Name: Dwi, Salary: 10000
Name: Nabil Salary 12880
# Dataset Dummy
karyawan <- data.frame(
Pengenal = c(1, 2, 3, 4, 5), # ID unik untuk setiap karyawan
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"), # Nama karyawan
Usia = c(25, 30, 27, 35, 40), # Usia karyawan
Gaji = c(5000, 7000, 6500, 10000, 12000), # Gaji karyawan dalam satuan tertentu
Posisi = c("Staf", "Pengawas", "Staf", "Manajer", "Direktur"), # Jabatan karyawan
Pertunjukan = c("Bagus", "Sangat bagus", "Rata-rata", "Bagus", "Sangat bagus") # Evaluasi kinerja
)
# Menampilkan daftar karyawan dengan gaji lebih dari 6000
cat("\nKaryawan dengan gaji lebih dari 6000:\n")##
## Karyawan dengan gaji lebih dari 6000:
for (i in 1:nrow(karyawan)) {
if (karyawan$Gaji[i] > 6000) { # Memeriksa apakah gaji karyawan lebih dari 6000
cat("Name:", karyawan$Nama[i], ", Salary:", karyawan$Gaji[i], "\n") # Menampilkan nama dan gaji karyawan yang memenuhi kriteria
}
}## Name: Joan , Salary: 7000
## Name: Alya , Salary: 6500
## Name: Dwi , Salary: 10000
## Name: Nabil , Salary: 12000
2. Gunakan while loop untuk menampilkan karyawan hingga “Manajer” ditemukan.
Hasil yang Diharapkan:
Name: Bages, Position: Staff
Name: Joan, Position: Supervisor
Name: Alya, Position: Staff
Name: Dewi, Position: Manager (Stop here)
# Dataset Dummy
karyawan <- data.frame(
Pengenal = c(1, 2, 3, 4, 5), # ID unik untuk setiap karyawan
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"), # Nama karyawan
Usia = c(25, 30, 27, 35, 40), # Usia karyawan
Gaji = c(5000, 7000, 6500, 10000, 12000), # Gaji karyawan dalam satuan tertentu
Posisi = c("Staf", "Pengawas", "Staf", "Manajer", "Direktur"), # Jabatan karyawan
Pertunjukan = c("Bagus", "Sangat bagus", "Rata-rata", "Bagus", "Sangat bagus") # Evaluasi kinerja
)
# Menampilkan karyawan hingga "Manajer" ditemukan
i <- 1 # Memulai Karyawan dari pertama
while (i <= nrow(karyawan)) {
cat("Name:", karyawan$Nama[i], ", Position:", karyawan$Posisi[i], "\n") # Menampilkan nama dan posisi karyawan
if (karyawan$Posisi[i] == "Manajer") { # Jika posisi adalah "Manajer", hentikan loop
cat("(Stop here)\n")
break
}
i <- i + 1 # Lanjut ke karyawan berikutnya
}## Name: Bagas , Position: Staf
## Name: Joan , Position: Pengawas
## Name: Alya , Position: Staf
## Name: Dwi , Position: Manajer
## (Stop here)
3. Gunakan break untuk menghentikan loop ketika karyawan dengan gaji di atas 10.000 ditemukan.
Hasil yang Diharapkan:
Name: Bagas, salary: seee
Name: Joan, Salary: 7000
Name: Alya, Salary: 6500
Name: Od, Salary: 10000
(Stopped because babil has a salery above 10,000)
# Dataset Dummy
karyawan <- data.frame(
Pengenal = c(1, 2, 3, 4, 5), # ID unik untuk setiap karyawan
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"), # Nama karyawan
Usia = c(25, 30, 27, 35, 40), # Usia karyawan
Gaji = c(5000, 7000, 6500, 10000, 12000), # Gaji karyawan dalam satuan tertentu
Posisi = c("Staf", "Pengawas", "Staf", "Manajer", "Direktur"), # Jabatan karyawan
Pertunjukan = c("Bagus", "Sangat bagus", "Rata-rata", "Bagus", "Sangat bagus") # Evaluasi kinerja
)
# Menghentikan loop saat menemukan karyawan dengan gaji di atas 10.000
for (i in 1:nrow(karyawan)) {
cat("Name:", karyawan$Nama[i], ", Salary:", karyawan$Gaji[i], "\n") # Menampilkan nama dan gaji karyawan
if (karyawan$Gaji[i] > 10000) { # Jika gaji lebih dari 10.000, hentikan loop
cat("(Stopped because", karyawan$Nama[i], "has a salary above 10,000)\n")
break
}
}## Name: Bagas , Salary: 5000
## Name: Joan , Salary: 7000
## Name: Alya , Salary: 6500
## Name: Dwi , Salary: 10000
## Name: Nabil , Salary: 12000
## (Stopped because Nabil has a salary above 10,000)
4. Gunakan lanjutkan untuk melewati karyawan dengan kinerja “Rata-rata”
Hasil yang Diharapkan:
Name: Bagas, Performance: Good
Name: Joan, Performance: Very Good
Name: Dwi, Performance: Good
Name: Nabil, Performance: Very Good
(Alya is skipped because the performance is “Average”)
# Dataset Dummy
karyawan <- data.frame(
Pengenal = c(1, 2, 3, 4, 5), # ID unik untuk setiap karyawan
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"), # Nama karyawan
Usia = c(25, 30, 27, 35, 40), # Usia karyawan
Gaji = c(5000, 7000, 6500, 10000, 12000), # Gaji karyawan dalam satuan tertentu
Posisi = c("Staf", "Pengawas", "Staf", "Manajer", "Direktur"), # Jabatan karyawan
Pertunjukan = c("Bagus", "Sangat bagus", "Rata-rata", "Bagus", "Sangat bagus") # Evaluasi kinerja
)
# Melewati karyawan dengan kinerja "Rata-rata"
for (i in 1:nrow(karyawan)) {
if (karyawan$Pertunjukan[i] == "Rata-rata") { # Jika kinerja "Rata-rata", lewati iterasi ini
next
}
cat("Name:", karyawan$Nama[i], ", Performance:", karyawan$Pertunjukan[i], "\n") # Menampilkan karyawan dengan kinerja selain "Rata-rata"
}## Name: Bagas , Performance: Bagus
## Name: Joan , Performance: Sangat bagus
## Name: Dwi , Performance: Bagus
## Name: Nabil , Performance: Sangat bagus
## (Alya is skipped because the performance is 'Average')