Seorang dosen memiliki data nilai Tugas, UTS, dan UAS dari 10 mahasiswa (data sintesis). Nilai akhir dihitung dengan bobot 30% Tugas, 30% UTS, 40% UAS. Mahasiswa lulus jika nilai akhir minimal 60. Grade ditentukan dari nilai akhir:
| Nilai akhir | Grade |
|---|---|
| >= 85 | A |
| 80 - < 85 | A- |
| 75 - < 80 | B+ |
| 70 - < 75 | B |
| 65 - < 70 | B- |
| 60 - < 65 | C+ |
| < 60 | Tidak Lulus |
Dosen ingin mengetahui nilai akhir, status kelulusan, grade, statistik nilai, persentase kelulusan, dan mahasiswa dengan nilai tertinggi.
| Bagian | Isi |
|---|---|
| Input | Nama, jenis kelamin, nilai Tugas, UTS, UAS |
| Process | Hitung nilai akhir; tentukan status dan grade; hitung statistik dan persentase lulus |
| Output | Tabel hasil, statistik ringkasan, persentase kelulusan |
library(dplyr)
nama <- c("Nadine Alodia Bandini", "Zaid Dian Prasetyo", "Nafa Erlinda Salsabila", "Pandu Pandita Adiguna Wijaya", "Nakeysha Zahira Childa",
"Raditya Octavian Pangestu", "Nazwa Aulia Larasati", "Rafie Hasbi Shidqy", "Rr Lintangmas Pindho Prameswari", "Nova Eka Fadhilah")
JK <- rep(c("P", "L"), 5)
tugas <- c(80, 65, 90, 75, 55, 88, 70, 95, 60, 78)
UTS <- c(75, 70, 85, 80, 60, 82, 65, 90, 55, 72)
UAS <- c(85, 60, 88, 78, 58, 90, 72, 92, 65, 70)
TABEL <- data.frame(nama, JK, tugas, UTS, UAS)
TABEL
## nama JK tugas UTS UAS
## 1 Nadine Alodia Bandini P 80 75 85
## 2 Zaid Dian Prasetyo L 65 70 60
## 3 Nafa Erlinda Salsabila P 90 85 88
## 4 Pandu Pandita Adiguna Wijaya L 75 80 78
## 5 Nakeysha Zahira Childa P 55 60 58
## 6 Raditya Octavian Pangestu L 88 82 90
## 7 Nazwa Aulia Larasati P 70 65 72
## 8 Rafie Hasbi Shidqy L 95 90 92
## 9 Rr Lintangmas Pindho Prameswari P 60 55 65
## 10 Nova Eka Fadhilah L 78 72 70
TABEL$Nilai_Akhir <- 0.30 * TABEL$tugas +
0.30 * TABEL$UTS +
0.40 * TABEL$UAS
TABEL$Nilai_Akhir
## [1] 80.5 64.5 87.7 77.7 57.7 87.0 69.3 92.3 60.5 73.0
TABEL$Status <- ifelse(TABEL$Nilai_Akhir >= 60, "Lulus", "Tidak Lulus")
TABEL[, c("nama", "Nilai_Akhir", "Status")]
## nama Nilai_Akhir Status
## 1 Nadine Alodia Bandini 80.5 Lulus
## 2 Zaid Dian Prasetyo 64.5 Lulus
## 3 Nafa Erlinda Salsabila 87.7 Lulus
## 4 Pandu Pandita Adiguna Wijaya 77.7 Lulus
## 5 Nakeysha Zahira Childa 57.7 Tidak Lulus
## 6 Raditya Octavian Pangestu 87.0 Lulus
## 7 Nazwa Aulia Larasati 69.3 Lulus
## 8 Rafie Hasbi Shidqy 92.3 Lulus
## 9 Rr Lintangmas Pindho Prameswari 60.5 Lulus
## 10 Nova Eka Fadhilah 73.0 Lulus
TABEL$Grade <- case_when(
TABEL$Nilai_Akhir >= 85 ~ "A",
TABEL$Nilai_Akhir >= 80 ~ "A-",
TABEL$Nilai_Akhir >= 75 ~ "B+",
TABEL$Nilai_Akhir >= 70 ~ "B",
TABEL$Nilai_Akhir >= 65 ~ "B-",
TABEL$Nilai_Akhir >= 60 ~ "C+",
TRUE ~ "Tidak Lulus"
)
TABEL[, c("nama", "Nilai_Akhir", "Status", "Grade")]
## nama Nilai_Akhir Status Grade
## 1 Nadine Alodia Bandini 80.5 Lulus A-
## 2 Zaid Dian Prasetyo 64.5 Lulus C+
## 3 Nafa Erlinda Salsabila 87.7 Lulus A
## 4 Pandu Pandita Adiguna Wijaya 77.7 Lulus B+
## 5 Nakeysha Zahira Childa 57.7 Tidak Lulus Tidak Lulus
## 6 Raditya Octavian Pangestu 87.0 Lulus A
## 7 Nazwa Aulia Larasati 69.3 Lulus B-
## 8 Rafie Hasbi Shidqy 92.3 Lulus A
## 9 Rr Lintangmas Pindho Prameswari 60.5 Lulus C+
## 10 Nova Eka Fadhilah 73.0 Lulus B
mean(TABEL$Nilai_Akhir)
## [1] 75.02
min(TABEL$Nilai_Akhir)
## [1] 57.7
max(TABEL$Nilai_Akhir)
## [1] 92.3
sd(TABEL$Nilai_Akhir)
## [1] 12.01109
summary(TABEL$Nilai_Akhir)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 57.70 65.70 75.35 75.02 85.38 92.30
jumlah_lulus <- sum(TABEL$Status == "Lulus")
jumlah_lulus
## [1] 9
persentase_lulus <- jumlah_lulus / nrow(TABEL) * 100
persentase_lulus
## [1] 90
tertinggi <- TABEL$nama[which.max(TABEL$Nilai_Akhir)]
tertinggi
## [1] "Rafie Hasbi Shidqy"
TABEL$rata2_Ujian_JK <- ave(TABEL$Nilai_Akhir, TABEL$JK, FUN = mean)
TABEL[, c("nama", "JK", "Nilai_Akhir", "rata2_Ujian_JK")]
## nama JK Nilai_Akhir rata2_Ujian_JK
## 1 Nadine Alodia Bandini P 80.5 71.14
## 2 Zaid Dian Prasetyo L 64.5 78.90
## 3 Nafa Erlinda Salsabila P 87.7 71.14
## 4 Pandu Pandita Adiguna Wijaya L 77.7 78.90
## 5 Nakeysha Zahira Childa P 57.7 71.14
## 6 Raditya Octavian Pangestu L 87.0 78.90
## 7 Nazwa Aulia Larasati P 69.3 71.14
## 8 Rafie Hasbi Shidqy L 92.3 78.90
## 9 Rr Lintangmas Pindho Prameswari P 60.5 71.14
## 10 Nova Eka Fadhilah L 73.0 78.90
cat("Jumlah mahasiswa :", nrow(TABEL), "\n")
## Jumlah mahasiswa : 10
cat("Rata-rata nilai akhir:", round(mean(TABEL$Nilai_Akhir), 2), "\n")
## Rata-rata nilai akhir: 75.02
cat("Jumlah lulus :", jumlah_lulus, "\n")
## Jumlah lulus : 9
cat("Persentase lulus :", persentase_lulus, "%\n")
## Persentase lulus : 90 %
cat("Nilai tertinggi :", tertinggi, "\n")
## Nilai tertinggi : Rafie Hasbi Shidqy
TABEL
## nama JK tugas UTS UAS Nilai_Akhir Status
## 1 Nadine Alodia Bandini P 80 75 85 80.5 Lulus
## 2 Zaid Dian Prasetyo L 65 70 60 64.5 Lulus
## 3 Nafa Erlinda Salsabila P 90 85 88 87.7 Lulus
## 4 Pandu Pandita Adiguna Wijaya L 75 80 78 77.7 Lulus
## 5 Nakeysha Zahira Childa P 55 60 58 57.7 Tidak Lulus
## 6 Raditya Octavian Pangestu L 88 82 90 87.0 Lulus
## 7 Nazwa Aulia Larasati P 70 65 72 69.3 Lulus
## 8 Rafie Hasbi Shidqy L 95 90 92 92.3 Lulus
## 9 Rr Lintangmas Pindho Prameswari P 60 55 65 60.5 Lulus
## 10 Nova Eka Fadhilah L 78 72 70 73.0 Lulus
## Grade rata2_Ujian_JK
## 1 A- 71.14
## 2 C+ 78.90
## 3 A 71.14
## 4 B+ 78.90
## 5 Tidak Lulus 71.14
## 6 A 78.90
## 7 B- 71.14
## 8 A 78.90
## 9 C+ 71.14
## 10 B 78.90
Dari 10 mahasiswa, seluruh hasil (nilai akhir, status, grade, dan
statistik) diperoleh dengan percabangan ifelse() dan
case_when() serta fungsi statistik dasar R.