2.5.1 Objective
# Membuat dataset sebagai data frame
employees <- 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")
)
# 1. Menggunakan conditional statements untuk menentukan kategori gaji
categorize_salary <- function(salary) {
if (salary < 6000) {
return("Low")
} else if (salary >= 6000 & salary < 10000) {
return("Medium")
} else {
return("High")
}
}
# Menambahkan kategori gaji ke dataset
employees$Salary_Category <- sapply(employees$Salary, categorize_salary)
# Menampilkan dataset dengan kategori gaji
print("Dataset dengan kategori gaji:")
## [1] "Dataset dengan kategori gaji:"
print(employees)
## ID Name Age Salary Position Performance Salary_Category
## 1 1 Bagas 25 5000 Staff Good Low
## 2 2 Joan 30 7000 Supervisor Very Good Medium
## 3 3 Alya 27 6500 Staff Average Medium
## 4 4 Dwi 35 10000 Manager Good High
## 5 5 Nabil 40 12000 Director Very Good High
cat("\n", strrep("=", 40), "\n\n")
##
## ========================================
# 2. Menggunakan for loop untuk menampilkan karyawan dengan gaji lebih dari 6000
cat("Employees with salary > 6000:\n\n")
## Employees with salary > 6000:
for (i in 1:nrow(employees)) {
if (employees$Salary[i] > 6000) {
cat(employees$Name[i], ", Salary:", employees$Salary[i], "\n")
}
}
## Joan , Salary: 7000
## Alya , Salary: 6500
## Dwi , Salary: 10000
## Nabil , Salary: 12000
cat("\n", strrep("=", 40), "\n\n")
##
## ========================================
# 3. Menggunakan while loop untuk menampilkan karyawan sampai menemukan 'Manager'
cat("Employees until a 'Manager' is found:\n\n")
## Employees until a 'Manager' is found:
i <- 1
while (i <= nrow(employees)) {
cat(employees$Name[i], ", Position:", employees$Position[i], "\n")
if (employees$Position[i] == "Manager") {
cat("(Stopped here)\n")
break
}
i <- i + 1
}
## Bagas , Position: Staff
## Joan , Position: Supervisor
## Alya , Position: Staff
## Dwi , Position: Manager
## (Stopped here)
cat("\n", strrep("=", 40), "\n\n")
##
## ========================================
# 4. Menggunakan break untuk menghentikan loop saat menemukan gaji > 10,000
cat("Employees until salary > 10,000 is found:\n\n")
## Employees until salary > 10,000 is found:
for (i in 1:nrow(employees)) {
if (employees$Salary[i] > 10000) {
cat("(Stopped because", employees$Name[i], "has a salary above 10,000)\n")
break
}
cat("Name:", employees$Name[i], ", Salary:", employees$Salary[i], "\n")
}
## 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)
cat("\n", strrep("=", 40), "\n\n")
##
## ========================================
# 5. Menggunakan continue untuk melewati karyawan dengan performa "Average"
cat("Employees skipping 'Average' performance:\n\n")
## Employees skipping 'Average' performance:
for (i in 1:nrow(employees)) {
if (employees$Performance[i] == "Average") {
next # Lewati karyawan dengan performa "Average"
}
cat("Name:", employees$Name[i], ", Performance:", employees$Performance[i], "\n")
}
## Name: Bagas , Performance: Good
## Name: Joan , Performance: Very Good
## Name: Dwi , Performance: Good
## Name: Nabil , Performance: Very Good
# 2.5.2 Conditional Statements
# Membuat dataset
employees <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Salary = c(5000, 7000, 6500, 10000, 12000),
Performance = c("Good", "Very Good", "Average", "Good", "Very Good")
)
# Fungsi untuk menghitung bonus
calculate_bonus <- function(salary, performance) {
if (performance == "Very Good") {
return(salary * 0.20)
} else if (performance == "Good") {
return(salary * 0.10)
} else if (performance == "Average") {
return(salary * 0.05)
} else {
return(0)
}
}
# Menghitung dan menampilkan bonus untuk setiap karyawan
cat("2.5.2 Conditional Statements - Bonus Calculation\n\n")
## 2.5.2 Conditional Statements - Bonus Calculation
for (i in 1:nrow(employees)) {
bonus <- calculate_bonus(employees$Salary[i], employees$Performance[i])
cat("Name:", employees$Name[i], ", Bonus:", as.integer(bonus), "\n")
}
## Name: Bagas , Bonus: 500
## Name: Joan , Bonus: 1400
## Name: Alya , Bonus: 325
## Name: Dwi , Bonus: 1000
## Name: Nabil , Bonus: 2400
# 2.5.3 Loops (For & While)
# Membuat dataset karyawan
employees <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Salary = c(5000, 7000, 6500, 10000, 12000),
Position = c("Staff", "Supervisor", "Staff", "Manager", "Director"),
Performance = c("Good", "Very Good", "Average", "Good", "Very Good")
)
# 1. Menggunakan for loop untuk menampilkan karyawan dengan gaji lebih dari 6000
cat("2.5.3.1 Employees with salary > 6000:\n\n")
## 2.5.3.1 Employees with salary > 6000:
for (i in 1:nrow(employees)) {
if (employees$Salary[i] > 6000) {
cat(employees$Name[i], ", Salary:", employees$Salary[i], "\n")
}
}
## Joan , Salary: 7000
## Alya , Salary: 6500
## Dwi , Salary: 10000
## Nabil , Salary: 12000
cat("\n", strrep("=", 40), "\n\n")
##
## ========================================
# 2. Menggunakan while loop untuk menampilkan karyawan sampai menemukan "Manager"
cat("2.5.3.2 Employees until a 'Manager' is found:\n\n")
## 2.5.3.2 Employees until a 'Manager' is found:
i <- 1
while (i <= nrow(employees)) {
cat(employees$Name[i], ", Position:", employees$Position[i], "\n")
if (employees$Position[i] == "Manager") {
cat("(Stopped here)\n")
break
}
i <- i + 1
}
## Bagas , Position: Staff
## Joan , Position: Supervisor
## Alya , Position: Staff
## Dwi , Position: Manager
## (Stopped here)
cat("\n", strrep("=", 40), "\n\n")
##
## ========================================
# 3. Menggunakan break untuk menghentikan loop saat menemukan gaji > 10,000
cat("2.5.3.3 Employees until salary > 10,000 is found:\n\n")
## 2.5.3.3 Employees until salary > 10,000 is found:
for (i in 1:nrow(employees)) {
if (employees$Salary[i] > 10000) {
cat("(Stopped because", employees$Name[i], "has a salary above 10,000)\n")
break
}
cat("Name:", employees$Name[i], ", Salary:", employees$Salary[i], "\n")
}
## 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)
cat("\n", strrep("=", 40), "\n\n")
##
## ========================================
# 4. Menggunakan continue untuk melewati karyawan dengan performa "Average"
cat("2.5.3.4 Employees skipping 'Average' performance:\n\n")
## 2.5.3.4 Employees skipping 'Average' performance:
for (i in 1:nrow(employees)) {
if (employees$Performance[i] == "Average") {
next # Lewati karyawan dengan performa "Average"
}
cat("Name:", employees$Name[i], ", Performance:", employees$Performance[i], "\n")
}
## Name: Bagas , Performance: Good
## Name: Joan , Performance: Very Good
## Name: Dwi , Performance: Good
## Name: Nabil , Performance: Very Good