1 Kasus

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.

2 Algoritma

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

3 Penyelesaian

3.1 Langkah 1: Membuat data mahasiswa

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

3.2 Langkah 2: Menghitung nilai akhir

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

3.3 Langkah 3: Menentukan status kelulusan

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

3.4 Langkah 4: Menentukan grade

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

3.5 Langkah 5: Statistik nilai akhir

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

3.6 Langkah 6: Jumlah dan persentase kelulusan

jumlah_lulus <- sum(TABEL$Status == "Lulus")
jumlah_lulus
## [1] 9
persentase_lulus <- jumlah_lulus / nrow(TABEL) * 100
persentase_lulus
## [1] 90

3.7 Langkah 7: Mahasiswa dengan nilai tertinggi

tertinggi <- TABEL$nama[which.max(TABEL$Nilai_Akhir)]
tertinggi
## [1] "Hendra"

3.8 Langkah 8: Rata-rata nilai akhir berdasarkan jenis kelamin

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

3.9 Langkah 9: Menampilkan hasil

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

4 Kesimpulan

Dari 10 mahasiswa, seluruh hasil (nilai akhir, status, grade, dan statistik) diperoleh dengan percabangan ifelse() dan case_when() serta fungsi statistik dasar R.