Second Task
Praticum Week 4
Januaria Teresinha
Data Science Student @ ITSB
Mentored by:
Mr. Bakti Siregar M.Sc., CDS
Mr. Bakti Siregar M.Sc., CDS
1 . Praktikum
Independent Practice:Conditional Statements and Loops in Python & R
1.1 .Tujuan
- Understand and implement Conditional Statements (if,if-else,if-elif-else).
- Apply loops (for loop,while loop,break,continue) to analyze a dataset.
Use the following dummy dataset:
library(knitr)
# 1. Membuat dataset dummy (Sesuai Tabel 2.5.1)
employee_data <- data.frame(
ID = c(1, 2, 3, 4, 5),
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Age = c(25, 30, 27, 35, 40),
Salary = c(5000, 7000, 6500, 10000, 12000),
Position = c("Staff", "Supervisor", "Staff", "Manager", "Director"),
Performance = c("Good", "Very Good", "Average", "Good", "Very Good"),
stringsAsFactors = FALSE
)
# Menampilkan tabel utama dengan format yang bersih
kable(employee_data,
format = "simple",
caption = "Tabel 2.5.1 Dummy Dataset",
align = "cllllc")| ID | Name | Age | Salary | Position | Performance |
|---|---|---|---|---|---|
| 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 dataframe sesuai dengan tabel pada gambar
df_karyawan <- data.frame(
ID = c(1, 2, 3, 4, 5),
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Age = c(25, 30, 27, 35, 40),
Salary = c(5000, 7000, 6500, 10000, 12000),
Position = c("Staff", "Supervisor", "Staff", "Manager", "Director"),
Performance = c("Good", "Very Good", "Average", "Good", "Very Good"),
stringsAsFactors = FALSE
)
# Menampilkan isi dataframe untuk memastikan data sudah benar
print(df_karyawan) ID Name Age Salary Position Performance
1 1 Bagas 25 5000 Staff Good
2 2 Joan 30 7000 Supervisor Very Good
3 3 Alya 27 6500 Staff Average
4 4 Dwi 35 10000 Manager Good
5 5 Nabil 40 12000 Director Very Good
1.2 Pernyataan Kondisi
# Kita punya df_karyawan sebagai sumber data utama di sini. Di dalamnya sudah lengkap ada nama, jabatan, dan gaji masing-masing orang, jadi kita tinggal olah saja untuk melihat gambaran besar tim kita.
# Iterasi melalui setiap baris di df_karyawan
for (i in 1:nrow(df_karyawan)) {
nama <- df_karyawan$Name[i]
gaji <- df_karyawan$Salary[i]
performa <- df_karyawan$Performance[i]
# Menentukan level bonus
if (performa == "Very Good") {
bonus <- gaji * 0.20
} else if (performa == "Good") {
bonus <- gaji * 0.10
} else if (performa == "Average") {
bonus <- gaji * 0.05
} else {
bonus <- 0
}
# Menampilkan output sesuai format: "Name: Bagas, Bonus: 500"
cat(paste0("\"Name: ", nama, ", Bonus: ", bonus, "\"\n"))
}"Name: Bagas, Bonus: 500"
"Name: Joan, Bonus: 1400"
"Name: Alya, Bonus: 325"
"Name: Dwi, Bonus: 1000"
"Name: Nabil, Bonus: 2400"
1.3 Loops (For & while)
# Kita akan menyaring karyawan yang memiliki gaji di atas 6000.
cat("--- No 1: Salary > 6000 ---\n")--- No 1: Salary > 6000 ---
for (i in 1:nrow(df_karyawan)) {
if (df_karyawan$Salary[i] > 6000) {
cat(sprintf("Name: %s, Salary: %g\n", df_karyawan$Name[i], df_karyawan$Salary[i]))
}
}Name: Joan, Salary: 7000
Name: Alya, Salary: 6500
Name: Dwi, Salary: 10000
Name: Nabil, Salary: 12000
# Perulangan akan terus berjalan dan berhenti tepat saat menemukan posisi Manager
cat("\n--- No 2: Stop at Manager ---\n")
--- No 2: Stop at Manager ---
i <- 1
while (i <= nrow(df_karyawan)) {
nama <- df_karyawan$Name[i]
posisi <- df_karyawan$Position[i]
if (posisi == "Manager") {
cat(sprintf("Name: %s, Position: %s (Berhenti di Sini)\n", nama, posisi))
break # Keluar dari loop setelah menemukan Manager
}
cat(sprintf("Name: %s, Position: %s\n", nama, posisi))
i <- i + 1
}Name: Bagas, Position: Staff
Name: Joan, Position: Supervisor
Name: Alya, Position: Staff
Name: Dwi, Position: Manager (Berhenti di Sini)
# Loop akan berhenti total jika menemukan karyawan dengan gaji lebih dari 10.000 (dalam kasus ini, Nabil)
cat("\n--- No 3: Break if Salary > 10000 ---\n")
--- No 3: Break if Salary > 10000 ---
for (i in 1:nrow(df_karyawan)) {
if (df_karyawan$Salary[i] > 10000) {
cat(sprintf("(Stopped because %s has a salary above 10,000)\n", df_karyawan$Name[i]))
break
}
cat(sprintf("Name: %s, Salary: %g\n", df_karyawan$Name[i], df_karyawan$Salary[i]))
}Name: Bagas, Salary: 5000
Name: Joan, Salary: 7000
Name: Alya, Salary: 6500
Name: Dwi, Salary: 10000
(Stopped because Nabil has a salary above 10,000)
# Di bahasa R, perintah untuk melompati iterasi (skip) bukan menggunakan continue, melainkan next.
cat("\n--- No 4: Skip Average Performance ---\n")
--- No 4: Skip Average Performance ---
for (i in 1:nrow(df_karyawan)) {
if (df_karyawan$Performance[i] == "Average") {
next # Melompati Alya
}
cat(sprintf("Name: %s, Performance: %s\n", df_karyawan$Name[i], df_karyawan$Performance[i]))
}Name: Bagas, Performance: Good
Name: Joan, Performance: Very Good
Name: Dwi, Performance: Good
Name: Nabil, Performance: Very Good