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("Anggun", "Budi", "Citra", "Dimas", "Elsa",
"Fajar", "Ghina", "Hendra", "Intan", "Joko")
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 Anggun P 80 75 85
## 2 Budi L 65 70 60
## 3 Citra P 90 85 88
## 4 Dimas L 75 80 78
## 5 Elsa P 55 60 58
## 6 Fajar L 88 82 90
## 7 Ghina P 70 65 72
## 8 Hendra L 95 90 92
## 9 Intan P 60 55 65
## 10 Joko 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 Anggun 80.5 Lulus
## 2 Budi 64.5 Lulus
## 3 Citra 87.7 Lulus
## 4 Dimas 77.7 Lulus
## 5 Elsa 57.7 Tidak Lulus
## 6 Fajar 87.0 Lulus
## 7 Ghina 69.3 Lulus
## 8 Hendra 92.3 Lulus
## 9 Intan 60.5 Lulus
## 10 Joko 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 Anggun 80.5 Lulus A-
## 2 Budi 64.5 Lulus C+
## 3 Citra 87.7 Lulus A
## 4 Dimas 77.7 Lulus B+
## 5 Elsa 57.7 Tidak Lulus Tidak Lulus
## 6 Fajar 87.0 Lulus A
## 7 Ghina 69.3 Lulus B-
## 8 Hendra 92.3 Lulus A
## 9 Intan 60.5 Lulus C+
## 10 Joko 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] "Hendra"
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 Anggun P 80.5 71.14
## 2 Budi L 64.5 78.90
## 3 Citra P 87.7 71.14
## 4 Dimas L 77.7 78.90
## 5 Elsa P 57.7 71.14
## 6 Fajar L 87.0 78.90
## 7 Ghina P 69.3 71.14
## 8 Hendra L 92.3 78.90
## 9 Intan P 60.5 71.14
## 10 Joko 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 : Hendra
TABEL
## nama JK tugas UTS UAS Nilai_Akhir Status Grade rata2_Ujian_JK
## 1 Anggun P 80 75 85 80.5 Lulus A- 71.14
## 2 Budi L 65 70 60 64.5 Lulus C+ 78.90
## 3 Citra P 90 85 88 87.7 Lulus A 71.14
## 4 Dimas L 75 80 78 77.7 Lulus B+ 78.90
## 5 Elsa P 55 60 58 57.7 Tidak Lulus Tidak Lulus 71.14
## 6 Fajar L 88 82 90 87.0 Lulus A 78.90
## 7 Ghina P 70 65 72 69.3 Lulus B- 71.14
## 8 Hendra L 95 90 92 92.3 Lulus A 78.90
## 9 Intan P 60 55 65 60.5 Lulus C+ 71.14
## 10 Joko L 78 72 70 73.0 Lulus 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.