Data Science Programming

Praktikum Pemrograman

Logo


Praktikum

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

Diketahui:

ID Name Age Salary Position Performa
1 Bagas 25 5000 Staff Good
2 Joan 30 7000 Supervisor Very Good
3 Alya 27 6500 Staff Average
4 Dwi 35 10000 Manager Good
5 Nabil 40 12000 Director Very Good
# Membuat dataset gaji dan kinerja karyawan
data_karyawan <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
  Gaji = c(5000, 7000, 6500, 10000, 12000), 
  Kinerja = c("Good", "Very Good", "Average", "Good", "Very Good")
)

# Membuat dataset posisi karyawan
data_posisi <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
  Posisi = c("Staff", "Supervisor", "Staff", "Manager", "Director")
)

# 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   Average      Staff
## 2 Bagas  5000      Good      Staff
## 3   Dwi 10000      Good    Manager
## 4  Joan  7000 Very Good Supervisor
## 5 Nabil 12000 Very Good   Director

Conditional Statements

Bonus karyawan ditentukan berdasarkan performa, dengan ketentuan berikut:
- Very Good → 20% dari gaji
- Good → 10% dari gaji
- Average → 5% dari gaji

  1. Menampilkan hasil dalam format berikut:
"Nama: Bagas, Bonus: 500"
# Membuat data karyawan dalam bentuk dataframe
karyawan <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
  Gaji = c(5000, 7000, 6500, 10000, 12000), 
  Performa = c("Good", "Very Good", "Average", "Good", "Very Good") 
)

# Loop untuk menghitung bonus tiap karyawan berdasarkan performanya
for (k in 1:nrow(karyawan)) {  
  if (karyawan$Performa[k] == "Very Good") {  
    bonus <- karyawan$Gaji[k] * 0.2  
  } else if (karyawan$Performa[k] == "Good") {
    bonus <- karyawan$Gaji[k] * 0.1  
  } else {
    bonus <- karyawan$Gaji[k] * 0.05  
  }
  
  # Menampilkan hasilnya
  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

2. Penggunaan Loops(for & While)

Gunakan For Loop jika (Gaji > 6000)

# Fungsi untuk menghitung bonus berdasarkan kinerja
hitung_bonus <- function(gaji, kinerja) {
  if (kinerja == "Very Good") {
    return(gaji * 0.2)
  } else if (kinerja == "Good") {
    return(gaji * 0.1)
  } else {
    return(gaji * 0.05)
  }
}

# Menyimpan hasil perhitungan bonus dalam dataframe
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

gunakan While Loop untuk menampilkan ( Karyawan -> Manager)

# Membuat data frame karyawan
karyawan <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
  Gaji = c(5000, 7000, 6500, 10000, 12000),
  Performa = c("Good", "Very Good", "Average", "Good", "Very Good"),
  Posisi = c("Staff", "Supervisor", "Staff", "Manager", "Director"),
  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] == "Manager") {
    break
  }
  
  # Tambah indeks
  k <- k + 1
}
## Nama: Bagas , Posisi: Staff 
## Nama: Joan , Posisi: Supervisor 
## Nama: Alya , Posisi: Staff 
## Nama: Dwi , Posisi: Manager

Gunakan Break untuk menghentikan Loop Jika (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("Good", "Very Good", "Average", "Good", "Very Good"),
  Posisi = c("Staff", "Supervisor", "Staff", "Manager", "Director")
)

# 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
  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

Gunakan Continue Untuk skip Karyawan yang memiliki performa Average

# Membuat data frame karyawan
karyawan <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
  Gaji = c(5000, 7000, 6500, 10000, 12000),
  Performa = c("Good", "Very Good", "Average", "Good", "Very Good"),
  Posisi = c("Staff", "Supervisor", "Staff", "Manager", "Director"),
  stringsAsFactors = FALSE
)

# Loop untuk menampilkan hasil sesuai format yang diinginkan
for (k in 1:nrow(karyawan)) {
  if (karyawan$Performa[k] == "Average") {
    next  # Melewati Alya karena performanya "Average"
  }
  
  # Menampilkan hasil dengan format yang diinginkan
  cat("Name:", karyawan$Nama[k], ", Performance:", karyawan$Performa[k], "\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 \"Average\")\n")
## (Alya is skipped because the performance is "Average")