Data Science Programming
Praktikum Pemrograman
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
- 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")
Sumber
-Syntax And Control Flow Book = https://bookdown.org/dsciencelabs/sampling_and_survey_techniques/docs/01-Principles-of-Sampling.html#sample