Dosen Pengampu: Bayutama Isnaini, S.Si., M.Si.
Disusun Oleh: Kelompok E
| Nama | NIM |
|---|---|
| Alvina Bintang Saharani | 21108062610008 |
| Azzam Radithya Helmyatoti | 21108062610017 |
| Christopher Timothy | 21108062610020 |
| Cyrilla Naifa Benita | 21108062610022 |
| Daniel Farrel Chandra Widjaja | 21108062610024 |
R adalah bahasa pemrograman dan lingkungan (environment) perangkat lunak berbasis open-source yang dirancang untuk komputasi statistik, analisis data, serta visualisasi grafik. Pertama kali dikembangkan oleh Ross Ihaka dan Robert Gentleman di University of Auckland, R kini dikelola oleh R Core Team di bawah naungan GNU General Public License.
Keunggulan utama R meliputi:
Fleksibilitas Struktur Data: Mendukung berbagai tipe data kompleks contohnya vector, matrix, list, dan data frame.
Operasi Tervektorisasi (Vectorized Operation): Untuk memproses deret data atau matriks secara simultan tanpa perulangan manual yang panjang.
Ekosistem Paket yang Luas: Didukung oleh puluhan ribu paket eksternal via CRAN (Comprehensive R Archive Network) untuk berbagai keperluan analisis statistik dan machine learning.
(Sumber:R Project Official Site, GeeksforGeeks)
Tujuan dari praktikum ini adalah
ifelse(), termasuk
percabangan bertingkat, untuk menentukan kategori nilai mahasiswa.Di dalam dunia akademik, pengolahan data nilai mahasiswa secara manual sering kali membutuhkan waktu lama dan rawan terjadi kesalahan hitung (human error). Oleh karena itu, diperlukan suatu sistem otomatisasi menggunakan bahasa R untuk mengolah data nilai mentah mahasiswa pada 8 mata kuliah: Kalkulus 1 (3 SKS), Statdas (3 SKS), Alpro (3 SKS), Basdat (3 SKS), Pancasila (2 SKS), Agama (2 SKS), AI (2 SKS), dan Peminatan (2 SKS). Masalah dan aturan pengolahan data yang harus diselesaikan meliputi:
a. Aturan Remedial (Batas Minimal Lulus)
Mahasiswa yang memiliki nilai kurang dari atau sama dengan 60 (≤60) wajib mengikuti remedial. Nilai mahasiswa tersebut harus diubah secara otomatis menjadi nilai minimal kelulusan, yaitu 60.
b. Perhitungan Nilai Rata-Rata
Menghitung nilai rata-rata dari seluruh mata kuliah untuk setiap mahasiswa setelah memperhitungkan penyesuaian nilai remedial.
c. Konversi Nilai Huruf dan Bobot
Mengonversi nilai hasil remedial ke dalam bentuk nilai huruf dan bobot angka sesuai kriteria berikut:
Nilai ≥ 85 → A (Bobot: 4)
Nilai ≥ 78 → B (Bobot: 3)
Nilai ≥ 70 → C (Bobot: 2)
Nilai ≥ 60 → D (Bobot: 1)
Nilai < 60 → E (Bobot: 0)
d. Perhitungan Indeks Prestasi (IP)
Menghitung Indeks Prestasi (IP) akhir mahasiswa dengan mengalikan bobot nilai tiap mata kuliah dengan jumlah SKS masing-masing, kemudian membaginya dengan total SKS yang ditempuh. Secara matematis, rumus perhitungan IP dirumuskan sebagai berikut: IP = ∑(SKS*Bobot)/∑SKS
Variabel merupakan tempat untuk menyimpan suatu nilai atau data yang dapat digunakan dalam proses perhitungan. Dalam R, variabel dapat dibuat menggunakan operator “<-”.
Contoh:
nama <- "Andi"
nilai <- 85
nama
## [1] "Andi"
nilai
## [1] 85
Operator adalah simbol yang digunakan untuk melakukan perhitungan, membandingkan nilai, atau menggabungkan kondisi dalam program R.
Operator Aritmetika
Operator aritmetika digunakan untuk melakukan operasi matematika.
| Operator | Fungsi |
|---|---|
| + | Penjumlahan |
| - | Pengurangan |
| * | Perkalian |
| / | Pembagian |
| ^ | Pangkat |
Contoh operator aritmetika:
nilai1 <- 80
nilai2 <- 90
rata_rata <- (nilai1 + nilai2) / 2
rata_rata
## [1] 85
Operator Perbandingan
Operator perbandingan digunakan untuk membandingkan dua nilai.
| Operator | Fungsi |
|---|---|
| > | Lebih dari |
| < | Kurang dari |
| >= | Lebih dari atau sama dengan |
| <= | Kurang dari atau sama dengan |
| == | Sama dengan |
| != | Tidak sama dengan |
Contoh operator perbandingan:
nilai <- 85
nilai > 75
## [1] TRUE
nilai <= 60
## [1] FALSE
Vektor adalah struktur data yang digunakan untuk menyimpan beberapa nilai dalam satu objek. Dalam R, elemen vektor biasanya memiliki tipe data yang sama. Vektor dapat dibuat menggunakan fungsi c() (combine).
Contoh:
nilai <- c(80, 75, 90, 85, 70)
nilai
## [1] 80 75 90 85 70
Data frame adalah struktur data berbentuk tabel yang terdiri dari baris dan kolom. Setiap kolom dapat memiliki tipe data berbeda, misalnya kolom nama berisi teks dan kolom nilai berisi angka.
Contoh:
mahasiswa <- data.frame(
Nama = c("Andi", "Budi", "Citra", "Dina"),
Nilai = c(80, 75, 90, 85)
)
ifelse()ifelse() adalah fungsi yang digunakan untuk menentukan hasil berdasarkan suatu kondisi. Jika kondisi benar (TRUE), R akan memberikan hasil pertama. Jika kondisi salah (FALSE), R akan memberikan hasil kedua.
Bentuk umum:
ifelse(kondisi, nilai_jika_benar, nilai_jika_salah)
Contoh:
nilai <- 80
status <- ifelse(nilai >= 75, "Lulus", "Tidak Lulus")
status
## [1] "Lulus"
Langkah awal dalam pengolahan data akademik adalah menginput data mentah mahasiswa serta menyusun struktur data frame. Selain itu, ditentukan vektor bobot SKS untuk masing-masing mata kuliah serta total SKS yang ditempuh.
# Menyiapkan Data
data_mahasiswa <- data.frame(
Nama = c(
"Adelia Meytha Pramesti (Adel)", "Adinda Erlin Mafazi Rahma (Mafa)",
"Adnan Faiz Taufiiqulfitroh (Faiz)", "Aisyah Umi Azzahra (Asya)",
"Alisia Hanna Hulaila (Alisia)", "Alvin Raditya Suryadi (Alvin)",
"Alvina Bintang Saharani (Bintang)", "Amanda Satya Hapsari (Amanda)",
"Andin Zulfa Syawaluna (Andin)", "Angelina Yonna Agni Prasetyo (Yonna)",
"Anisya Hanif Auliya (Nisya)", "Arlonnsy Reinzo Oriordan (Arlon)",
"Athifa Nuria Maghfiro (Athifa)", "Aulin Praba Kinanti (Aulin)",
"Aura Brilliancy Zizdha (Aura)", "Azzam Radithya Helmyatoti (Azzam)",
"Bona Aron Sidauruk (Bona)", "Caraka Sakti Andaru (Sakti)",
"Christopher Timothy (Christo)", "Cindwi Fidah Qutrratu'ain (Cindwi)",
"Cyrilla Naifa Benita (Cyril)", "Damar Fadhal Athaya Putera (Damar)",
"Daniel Farrel Chandra Widjaja (Farrel)", "Davina Intan Diva Puteri (Davina/Diva)",
"Deas Setiana Bakti (Deas)", "Dewi Cinta Azzahra (Dewi)",
"Dika Faturrohman (Dika)", "Dyah Vitaloka (Vita)",
"Ezra Filya Pasaribu (Ezra)", "Fairuz Zahwa Fathurochman (Fairuz)",
"Faiz Ayesha Ceyda Emira (Ayesha)", "Farah Octavia (Farah)",
"Faridatun Khasanah (Farida)", "Fathinatuz Zahra (Fathin)",
"Fatihan Bilal Akhsana (Bilal)"
),
Kalkulus1 = c(82, 82, 68, 67, 58, 68, 59, 79, 81, 72, 63, 94, 79, 79, 90, 68, 74, 63, 57, 57, 84, 67, 61, 90, 70, 82, 63, 55, 89, 94, 73, 91, 56, 90, 75),
Statdas = c(54, 79, 75, 64, 89, 79, 84, 57, 89, 92, 59, 75, 52, 67, 59, 77, 68, 80, 50, 90, 55, 62, 51, 93, 87, 82, 88, 71, 95, 81, 93, 57, 52, 94, 78),
Alpro = c(75, 79, 81, 56, 63, 66, 76, 57, 56, 54, 54, 95, 79, 91, 84, 87, 71, 95, 53, 83, 63, 88, 59, 77, 63, 63, 70, 86, 67, 92, 65, 73, 67, 94, 83),
Basdat = c(68, 64, 64, 65, 60, 69, 55, 86, 56, 87, 89, 71, 68, 54, 62, 78, 65, 50, 87, 80, 56, 76, 63, 62, 80, 74, 95, 62, 72, 65, 93, 78, 53, 58, 54),
Pancasila = c(91, 52, 88, 51, 89, 50, 61, 50, 62, 95, 52, 84, 54, 91, 53, 81, 95, 87, 63, 80, 84, 81, 61, 70, 54, 66, 60, 61, 57, 72, 63, 78, 64, 51, 91),
Agama = c(66, 58, 66, 60, 79, 89, 88, 66, 73, 52, 83, 56, 77, 68, 89, 74, 52, 60, 52, 83, 58, 74, 65, 59, 92, 76, 58, 68, 88, 95, 77, 76, 50, 52, 80),
AI = c(61, 88, 70, 52, 90, 60, 88, 51, 93, 62, 57, 56, 74, 66, 77, 50, 68, 66, 77, 81, 89, 75, 51, 73, 95, 71, 59, 89, 61, 93, 69, 71, 50, 94, 77),
Peminatan = c(82, 74, 89, 50, 80, 52, 93, 52, 94, 88, 61, 54, 74, 67, 93, 84, 62, 95, 51, 68, 92, 83, 67, 70, 81, 58, 67, 80, 72, 51, 81, 54, 85, 69, 65)
)
data_mahasiswa
## Nama Kalkulus1 Statdas Alpro Basdat
## 1 Adelia Meytha Pramesti (Adel) 82 54 75 68
## 2 Adinda Erlin Mafazi Rahma (Mafa) 82 79 79 64
## 3 Adnan Faiz Taufiiqulfitroh (Faiz) 68 75 81 64
## 4 Aisyah Umi Azzahra (Asya) 67 64 56 65
## 5 Alisia Hanna Hulaila (Alisia) 58 89 63 60
## 6 Alvin Raditya Suryadi (Alvin) 68 79 66 69
## 7 Alvina Bintang Saharani (Bintang) 59 84 76 55
## 8 Amanda Satya Hapsari (Amanda) 79 57 57 86
## 9 Andin Zulfa Syawaluna (Andin) 81 89 56 56
## 10 Angelina Yonna Agni Prasetyo (Yonna) 72 92 54 87
## 11 Anisya Hanif Auliya (Nisya) 63 59 54 89
## 12 Arlonnsy Reinzo Oriordan (Arlon) 94 75 95 71
## 13 Athifa Nuria Maghfiro (Athifa) 79 52 79 68
## 14 Aulin Praba Kinanti (Aulin) 79 67 91 54
## 15 Aura Brilliancy Zizdha (Aura) 90 59 84 62
## 16 Azzam Radithya Helmyatoti (Azzam) 68 77 87 78
## 17 Bona Aron Sidauruk (Bona) 74 68 71 65
## 18 Caraka Sakti Andaru (Sakti) 63 80 95 50
## 19 Christopher Timothy (Christo) 57 50 53 87
## 20 Cindwi Fidah Qutrratu'ain (Cindwi) 57 90 83 80
## 21 Cyrilla Naifa Benita (Cyril) 84 55 63 56
## 22 Damar Fadhal Athaya Putera (Damar) 67 62 88 76
## 23 Daniel Farrel Chandra Widjaja (Farrel) 61 51 59 63
## 24 Davina Intan Diva Puteri (Davina/Diva) 90 93 77 62
## 25 Deas Setiana Bakti (Deas) 70 87 63 80
## 26 Dewi Cinta Azzahra (Dewi) 82 82 63 74
## 27 Dika Faturrohman (Dika) 63 88 70 95
## 28 Dyah Vitaloka (Vita) 55 71 86 62
## 29 Ezra Filya Pasaribu (Ezra) 89 95 67 72
## 30 Fairuz Zahwa Fathurochman (Fairuz) 94 81 92 65
## 31 Faiz Ayesha Ceyda Emira (Ayesha) 73 93 65 93
## 32 Farah Octavia (Farah) 91 57 73 78
## 33 Faridatun Khasanah (Farida) 56 52 67 53
## 34 Fathinatuz Zahra (Fathin) 90 94 94 58
## 35 Fatihan Bilal Akhsana (Bilal) 75 78 83 54
## Pancasila Agama AI Peminatan
## 1 91 66 61 82
## 2 52 58 88 74
## 3 88 66 70 89
## 4 51 60 52 50
## 5 89 79 90 80
## 6 50 89 60 52
## 7 61 88 88 93
## 8 50 66 51 52
## 9 62 73 93 94
## 10 95 52 62 88
## 11 52 83 57 61
## 12 84 56 56 54
## 13 54 77 74 74
## 14 91 68 66 67
## 15 53 89 77 93
## 16 81 74 50 84
## 17 95 52 68 62
## 18 87 60 66 95
## 19 63 52 77 51
## 20 80 83 81 68
## 21 84 58 89 92
## 22 81 74 75 83
## 23 61 65 51 67
## 24 70 59 73 70
## 25 54 92 95 81
## 26 66 76 71 58
## 27 60 58 59 67
## 28 61 68 89 80
## 29 57 88 61 72
## 30 72 95 93 51
## 31 63 77 69 81
## 32 78 76 71 54
## 33 64 50 50 85
## 34 51 52 94 69
## 35 91 80 77 65
# Vektor SKS Mata Kuliah
sks <- c(Kalkulus1 = 3, Statdas = 3, Alpro = 3, Basdat = 3, Pancasila = 2, Agama = 2, AI = 2, Peminatan = 2)
total_sks <- sum(sks)
Penjelasan:
Aturan penyesuaian nilai diterapkan dengan memeriksa setiap mata kuliah. Jika mahasiswa memiliki nilai 60, nilainya akan otomatis dinaikkan menjadi 60 (batas kelulusan remedial).
# Pengolahan Data Remedial
data_remedial <- data_mahasiswa
data_remedial$Kalkulus1 <- ifelse(data_remedial$Kalkulus1 <= 60, 60, data_remedial$Kalkulus1)
data_remedial$Statdas <- ifelse(data_remedial$Statdas <= 60, 60, data_remedial$Statdas)
data_remedial$Alpro <- ifelse(data_remedial$Alpro <= 60, 60, data_remedial$Alpro)
data_remedial$Basdat <- ifelse(data_remedial$Basdat <= 60, 60, data_remedial$Basdat)
data_remedial$Pancasila <- ifelse(data_remedial$Pancasila <= 60, 60, data_remedial$Pancasila)
data_remedial$Agama <- ifelse(data_remedial$Agama <= 60, 60, data_remedial$Agama)
data_remedial$AI <- ifelse(data_remedial$AI <= 60, 60, data_remedial$AI)
data_remedial$Peminatan <- ifelse(data_remedial$Peminatan <= 60, 60, data_remedial$Peminatan)
# Menampilkan hasil data remedial
data_remedial
## Nama Kalkulus1 Statdas Alpro Basdat
## 1 Adelia Meytha Pramesti (Adel) 82 60 75 68
## 2 Adinda Erlin Mafazi Rahma (Mafa) 82 79 79 64
## 3 Adnan Faiz Taufiiqulfitroh (Faiz) 68 75 81 64
## 4 Aisyah Umi Azzahra (Asya) 67 64 60 65
## 5 Alisia Hanna Hulaila (Alisia) 60 89 63 60
## 6 Alvin Raditya Suryadi (Alvin) 68 79 66 69
## 7 Alvina Bintang Saharani (Bintang) 60 84 76 60
## 8 Amanda Satya Hapsari (Amanda) 79 60 60 86
## 9 Andin Zulfa Syawaluna (Andin) 81 89 60 60
## 10 Angelina Yonna Agni Prasetyo (Yonna) 72 92 60 87
## 11 Anisya Hanif Auliya (Nisya) 63 60 60 89
## 12 Arlonnsy Reinzo Oriordan (Arlon) 94 75 95 71
## 13 Athifa Nuria Maghfiro (Athifa) 79 60 79 68
## 14 Aulin Praba Kinanti (Aulin) 79 67 91 60
## 15 Aura Brilliancy Zizdha (Aura) 90 60 84 62
## 16 Azzam Radithya Helmyatoti (Azzam) 68 77 87 78
## 17 Bona Aron Sidauruk (Bona) 74 68 71 65
## 18 Caraka Sakti Andaru (Sakti) 63 80 95 60
## 19 Christopher Timothy (Christo) 60 60 60 87
## 20 Cindwi Fidah Qutrratu'ain (Cindwi) 60 90 83 80
## 21 Cyrilla Naifa Benita (Cyril) 84 60 63 60
## 22 Damar Fadhal Athaya Putera (Damar) 67 62 88 76
## 23 Daniel Farrel Chandra Widjaja (Farrel) 61 60 60 63
## 24 Davina Intan Diva Puteri (Davina/Diva) 90 93 77 62
## 25 Deas Setiana Bakti (Deas) 70 87 63 80
## 26 Dewi Cinta Azzahra (Dewi) 82 82 63 74
## 27 Dika Faturrohman (Dika) 63 88 70 95
## 28 Dyah Vitaloka (Vita) 60 71 86 62
## 29 Ezra Filya Pasaribu (Ezra) 89 95 67 72
## 30 Fairuz Zahwa Fathurochman (Fairuz) 94 81 92 65
## 31 Faiz Ayesha Ceyda Emira (Ayesha) 73 93 65 93
## 32 Farah Octavia (Farah) 91 60 73 78
## 33 Faridatun Khasanah (Farida) 60 60 67 60
## 34 Fathinatuz Zahra (Fathin) 90 94 94 60
## 35 Fatihan Bilal Akhsana (Bilal) 75 78 83 60
## Pancasila Agama AI Peminatan
## 1 91 66 61 82
## 2 60 60 88 74
## 3 88 66 70 89
## 4 60 60 60 60
## 5 89 79 90 80
## 6 60 89 60 60
## 7 61 88 88 93
## 8 60 66 60 60
## 9 62 73 93 94
## 10 95 60 62 88
## 11 60 83 60 61
## 12 84 60 60 60
## 13 60 77 74 74
## 14 91 68 66 67
## 15 60 89 77 93
## 16 81 74 60 84
## 17 95 60 68 62
## 18 87 60 66 95
## 19 63 60 77 60
## 20 80 83 81 68
## 21 84 60 89 92
## 22 81 74 75 83
## 23 61 65 60 67
## 24 70 60 73 70
## 25 60 92 95 81
## 26 66 76 71 60
## 27 60 60 60 67
## 28 61 68 89 80
## 29 60 88 61 72
## 30 72 95 93 60
## 31 63 77 69 81
## 32 78 76 71 60
## 33 64 60 60 85
## 34 60 60 94 69
## 35 91 80 77 65
Penjelasan:
Setelah data nilai remedial diperbarui, dilakukan perhitungan nilai rata-rata dari seluruh mata kuliah untuk setiap mahasiswa.
# Menghitung nilai rata-rata
rata_rata <- rowMeans(data_remedial[, -1])
# Menyimpan ke dalam data frame baru
hasil_rata_rata <- data.frame(
Nama = data_remedial$Nama,
Rata_rata = rata_rata
)
# Menampilkan hasil rata-rata
hasil_rata_rata
## Nama Rata_rata
## 1 Adelia Meytha Pramesti (Adel) 73.125
## 2 Adinda Erlin Mafazi Rahma (Mafa) 73.250
## 3 Adnan Faiz Taufiiqulfitroh (Faiz) 75.125
## 4 Aisyah Umi Azzahra (Asya) 62.000
## 5 Alisia Hanna Hulaila (Alisia) 76.250
## 6 Alvin Raditya Suryadi (Alvin) 68.875
## 7 Alvina Bintang Saharani (Bintang) 76.250
## 8 Amanda Satya Hapsari (Amanda) 66.375
## 9 Andin Zulfa Syawaluna (Andin) 76.500
## 10 Angelina Yonna Agni Prasetyo (Yonna) 77.000
## 11 Anisya Hanif Auliya (Nisya) 67.000
## 12 Arlonnsy Reinzo Oriordan (Arlon) 74.875
## 13 Athifa Nuria Maghfiro (Athifa) 71.375
## 14 Aulin Praba Kinanti (Aulin) 73.625
## 15 Aura Brilliancy Zizdha (Aura) 76.875
## 16 Azzam Radithya Helmyatoti (Azzam) 76.125
## 17 Bona Aron Sidauruk (Bona) 70.375
## 18 Caraka Sakti Andaru (Sakti) 75.750
## 19 Christopher Timothy (Christo) 65.875
## 20 Cindwi Fidah Qutrratu'ain (Cindwi) 78.125
## 21 Cyrilla Naifa Benita (Cyril) 74.000
## 22 Damar Fadhal Athaya Putera (Damar) 75.750
## 23 Daniel Farrel Chandra Widjaja (Farrel) 62.125
## 24 Davina Intan Diva Puteri (Davina/Diva) 74.375
## 25 Deas Setiana Bakti (Deas) 78.500
## 26 Dewi Cinta Azzahra (Dewi) 71.750
## 27 Dika Faturrohman (Dika) 70.375
## 28 Dyah Vitaloka (Vita) 72.125
## 29 Ezra Filya Pasaribu (Ezra) 75.500
## 30 Fairuz Zahwa Fathurochman (Fairuz) 81.500
## 31 Faiz Ayesha Ceyda Emira (Ayesha) 76.750
## 32 Farah Octavia (Farah) 73.375
## 33 Faridatun Khasanah (Farida) 64.500
## 34 Fathinatuz Zahra (Fathin) 77.625
## 35 Fatihan Bilal Akhsana (Bilal) 76.125
Penjelasan:
data_remedial[, -1] mengambil seluruh kolom kecuali kolom pertama (kolom nama).
rowMeans() menghitung rata-rata nilai secara horizontal per baris.
Langkah ini mengonversi nilai angka hasil remedial menjadi predikat huruf (A, B, C, D, E) dan bobot angka (4, 3, 2, 1, 0) menggunakan perulangan for dan logika bersarang ifelse().
# Konversi nilai huruf
nilai_huruf <- data_remedial
for (i in 2:9) {
nilai_huruf[[i]] <- ifelse(
data_remedial[[i]] >= 85, "A",
ifelse(data_remedial[[i]] >= 78, "B",
ifelse(data_remedial[[i]] >= 70, "C",
ifelse(data_remedial[[i]] >= 60, "D", "E")
)
)
)
}
nilai_huruf
## Nama Kalkulus1 Statdas Alpro Basdat
## 1 Adelia Meytha Pramesti (Adel) B D C D
## 2 Adinda Erlin Mafazi Rahma (Mafa) B B B D
## 3 Adnan Faiz Taufiiqulfitroh (Faiz) D C B D
## 4 Aisyah Umi Azzahra (Asya) D D D D
## 5 Alisia Hanna Hulaila (Alisia) D A D D
## 6 Alvin Raditya Suryadi (Alvin) D B D D
## 7 Alvina Bintang Saharani (Bintang) D B C D
## 8 Amanda Satya Hapsari (Amanda) B D D A
## 9 Andin Zulfa Syawaluna (Andin) B A D D
## 10 Angelina Yonna Agni Prasetyo (Yonna) C A D A
## 11 Anisya Hanif Auliya (Nisya) D D D A
## 12 Arlonnsy Reinzo Oriordan (Arlon) A C A C
## 13 Athifa Nuria Maghfiro (Athifa) B D B D
## 14 Aulin Praba Kinanti (Aulin) B D A D
## 15 Aura Brilliancy Zizdha (Aura) A D B D
## 16 Azzam Radithya Helmyatoti (Azzam) D C A B
## 17 Bona Aron Sidauruk (Bona) C D C D
## 18 Caraka Sakti Andaru (Sakti) D B A D
## 19 Christopher Timothy (Christo) D D D A
## 20 Cindwi Fidah Qutrratu'ain (Cindwi) D A B B
## 21 Cyrilla Naifa Benita (Cyril) B D D D
## 22 Damar Fadhal Athaya Putera (Damar) D D A C
## 23 Daniel Farrel Chandra Widjaja (Farrel) D D D D
## 24 Davina Intan Diva Puteri (Davina/Diva) A A C D
## 25 Deas Setiana Bakti (Deas) C A D B
## 26 Dewi Cinta Azzahra (Dewi) B B D C
## 27 Dika Faturrohman (Dika) D A C A
## 28 Dyah Vitaloka (Vita) D C A D
## 29 Ezra Filya Pasaribu (Ezra) A A D C
## 30 Fairuz Zahwa Fathurochman (Fairuz) A B A D
## 31 Faiz Ayesha Ceyda Emira (Ayesha) C A D A
## 32 Farah Octavia (Farah) A D C B
## 33 Faridatun Khasanah (Farida) D D D D
## 34 Fathinatuz Zahra (Fathin) A A A D
## 35 Fatihan Bilal Akhsana (Bilal) C B B D
## Pancasila Agama AI Peminatan
## 1 A D D B
## 2 D D A C
## 3 A D C A
## 4 D D D D
## 5 A B A B
## 6 D A D D
## 7 D A A A
## 8 D D D D
## 9 D C A A
## 10 A D D A
## 11 D B D D
## 12 B D D D
## 13 D C C C
## 14 A D D D
## 15 D A C A
## 16 B C D B
## 17 A D D D
## 18 A D D A
## 19 D D C D
## 20 B B B D
## 21 B D A A
## 22 B C C B
## 23 D D D D
## 24 C D C C
## 25 D A A B
## 26 D C C D
## 27 D D D D
## 28 D D A B
## 29 D A D C
## 30 C A A D
## 31 D C D B
## 32 B C C D
## 33 D D D A
## 34 D D A D
## 35 A B C D
# Konversi nilai bobot
bobot <- data_remedial
for (i in 2:9) {
bobot[[i]] <- ifelse(
data_remedial[[i]] >= 85, 4,
ifelse(data_remedial[[i]] >= 78, 3,
ifelse(data_remedial[[i]] >= 70, 2,
ifelse(data_remedial[[i]] >= 60, 1, 0)
)
)
)
}
bobot
## Nama Kalkulus1 Statdas Alpro Basdat
## 1 Adelia Meytha Pramesti (Adel) 3 1 2 1
## 2 Adinda Erlin Mafazi Rahma (Mafa) 3 3 3 1
## 3 Adnan Faiz Taufiiqulfitroh (Faiz) 1 2 3 1
## 4 Aisyah Umi Azzahra (Asya) 1 1 1 1
## 5 Alisia Hanna Hulaila (Alisia) 1 4 1 1
## 6 Alvin Raditya Suryadi (Alvin) 1 3 1 1
## 7 Alvina Bintang Saharani (Bintang) 1 3 2 1
## 8 Amanda Satya Hapsari (Amanda) 3 1 1 4
## 9 Andin Zulfa Syawaluna (Andin) 3 4 1 1
## 10 Angelina Yonna Agni Prasetyo (Yonna) 2 4 1 4
## 11 Anisya Hanif Auliya (Nisya) 1 1 1 4
## 12 Arlonnsy Reinzo Oriordan (Arlon) 4 2 4 2
## 13 Athifa Nuria Maghfiro (Athifa) 3 1 3 1
## 14 Aulin Praba Kinanti (Aulin) 3 1 4 1
## 15 Aura Brilliancy Zizdha (Aura) 4 1 3 1
## 16 Azzam Radithya Helmyatoti (Azzam) 1 2 4 3
## 17 Bona Aron Sidauruk (Bona) 2 1 2 1
## 18 Caraka Sakti Andaru (Sakti) 1 3 4 1
## 19 Christopher Timothy (Christo) 1 1 1 4
## 20 Cindwi Fidah Qutrratu'ain (Cindwi) 1 4 3 3
## 21 Cyrilla Naifa Benita (Cyril) 3 1 1 1
## 22 Damar Fadhal Athaya Putera (Damar) 1 1 4 2
## 23 Daniel Farrel Chandra Widjaja (Farrel) 1 1 1 1
## 24 Davina Intan Diva Puteri (Davina/Diva) 4 4 2 1
## 25 Deas Setiana Bakti (Deas) 2 4 1 3
## 26 Dewi Cinta Azzahra (Dewi) 3 3 1 2
## 27 Dika Faturrohman (Dika) 1 4 2 4
## 28 Dyah Vitaloka (Vita) 1 2 4 1
## 29 Ezra Filya Pasaribu (Ezra) 4 4 1 2
## 30 Fairuz Zahwa Fathurochman (Fairuz) 4 3 4 1
## 31 Faiz Ayesha Ceyda Emira (Ayesha) 2 4 1 4
## 32 Farah Octavia (Farah) 4 1 2 3
## 33 Faridatun Khasanah (Farida) 1 1 1 1
## 34 Fathinatuz Zahra (Fathin) 4 4 4 1
## 35 Fatihan Bilal Akhsana (Bilal) 2 3 3 1
## Pancasila Agama AI Peminatan
## 1 4 1 1 3
## 2 1 1 4 2
## 3 4 1 2 4
## 4 1 1 1 1
## 5 4 3 4 3
## 6 1 4 1 1
## 7 1 4 4 4
## 8 1 1 1 1
## 9 1 2 4 4
## 10 4 1 1 4
## 11 1 3 1 1
## 12 3 1 1 1
## 13 1 2 2 2
## 14 4 1 1 1
## 15 1 4 2 4
## 16 3 2 1 3
## 17 4 1 1 1
## 18 4 1 1 4
## 19 1 1 2 1
## 20 3 3 3 1
## 21 3 1 4 4
## 22 3 2 2 3
## 23 1 1 1 1
## 24 2 1 2 2
## 25 1 4 4 3
## 26 1 2 2 1
## 27 1 1 1 1
## 28 1 1 4 3
## 29 1 4 1 2
## 30 2 4 4 1
## 31 1 2 1 3
## 32 3 2 2 1
## 33 1 1 1 4
## 34 1 1 4 1
## 35 4 3 2 1
Penjelasan:
Perulangan for (i in 2:9) secara otomatis memproses kolom ke-2 sampai kolom ke-9 (seluruh kolom mata kuliah).
ifelse() bersarang (nested ifelse) mengelompokkan nilai angka ke skala huruf dan bobot yang sesuai.
Tahap akhir adalah mengalikan bobot nilai mata kuliah dengan SKS masing-masing, lalu membaginya dengan total SKS untuk memperoleh IP mahasiswa.
# Menghitung IP
IP <- (
bobot$Kalkulus1 * sks["Kalkulus1"] +
bobot$Statdas * sks["Statdas"] +
bobot$Alpro * sks["Alpro"] +
bobot$Basdat * sks["Basdat"] +
bobot$Pancasila * sks["Pancasila"] +
bobot$Agama * sks["Agama"] +
bobot$AI * sks["AI"] +
bobot$Peminatan * sks["Peminatan"]
) / total_sks
# Menyimpan hasil perhitungan IP
hasil_IP <- data.frame(
Nama = data_mahasiswa$Nama,
IP = IP
)
# Menampilkan hasil IP akhir
hasil_IP
## Nama IP
## 1 Adelia Meytha Pramesti (Adel) 1.95
## 2 Adinda Erlin Mafazi Rahma (Mafa) 2.30
## 3 Adnan Faiz Taufiiqulfitroh (Faiz) 2.15
## 4 Aisyah Umi Azzahra (Asya) 1.00
## 5 Alisia Hanna Hulaila (Alisia) 2.45
## 6 Alvin Raditya Suryadi (Alvin) 1.60
## 7 Alvina Bintang Saharani (Bintang) 2.35
## 8 Amanda Satya Hapsari (Amanda) 1.75
## 9 Andin Zulfa Syawaluna (Andin) 2.45
## 10 Angelina Yonna Agni Prasetyo (Yonna) 2.65
## 11 Anisya Hanif Auliya (Nisya) 1.65
## 12 Arlonnsy Reinzo Oriordan (Arlon) 2.40
## 13 Athifa Nuria Maghfiro (Athifa) 1.90
## 14 Aulin Praba Kinanti (Aulin) 2.05
## 15 Aura Brilliancy Zizdha (Aura) 2.45
## 16 Azzam Radithya Helmyatoti (Azzam) 2.40
## 17 Bona Aron Sidauruk (Bona) 1.60
## 18 Caraka Sakti Andaru (Sakti) 2.35
## 19 Christopher Timothy (Christo) 1.55
## 20 Cindwi Fidah Qutrratu'ain (Cindwi) 2.65
## 21 Cyrilla Naifa Benita (Cyril) 2.10
## 22 Damar Fadhal Athaya Putera (Damar) 2.20
## 23 Daniel Farrel Chandra Widjaja (Farrel) 1.00
## 24 Davina Intan Diva Puteri (Davina/Diva) 2.35
## 25 Deas Setiana Bakti (Deas) 2.70
## 26 Dewi Cinta Azzahra (Dewi) 1.95
## 27 Dika Faturrohman (Dika) 2.05
## 28 Dyah Vitaloka (Vita) 2.10
## 29 Ezra Filya Pasaribu (Ezra) 2.45
## 30 Fairuz Zahwa Fathurochman (Fairuz) 2.90
## 31 Faiz Ayesha Ceyda Emira (Ayesha) 2.35
## 32 Farah Octavia (Farah) 2.30
## 33 Faridatun Khasanah (Farida) 1.30
## 34 Fathinatuz Zahra (Fathin) 2.65
## 35 Fatihan Bilal Akhsana (Bilal) 2.35
Penjelasan:
Setiap kolom bobot dikalikan dengan SKS masing-masing dari vektor sks.
Jumlah hasil kali tersebut dibagi dengan total_sks untuk memperoleh nilai Indeks Prestasi (IP) akhir mahasiswa.
Ringkasan nilai mahasiswa digunakan untuk mengetahui gambaran umum nilai pada setiap mata kuliah setelah dilakukan pengolahan nilai remedial. Analisis ini meliputi nilai minimum, kuartil pertama, median, rata-rata (mean), kuartil ketiga, dan nilai maksimum. Informasi tersebut dapat digunakan untuk melihat sebaran nilai serta membandingkan hasil belajar mahasiswa pada setiap mata kuliah.
summary(data_remedial[, 2:9])
## Kalkulus1 Statdas Alpro Basdat Pancasila
## Min. :60.00 Min. :60.0 Min. :60.00 Min. :60.00 Min. :60.00
## 1st Qu.:63.00 1st Qu.:60.0 1st Qu.:63.00 1st Qu.:61.00 1st Qu.:60.00
## Median :73.00 Median :77.0 Median :73.00 Median :65.00 Median :64.00
## Mean :74.23 Mean :75.2 Mean :74.17 Mean :70.37 Mean :71.94
## 3rd Qu.:82.00 3rd Qu.:87.5 3rd Qu.:83.50 3rd Qu.:78.00 3rd Qu.:84.00
## Max. :94.00 Max. :95.0 Max. :95.00 Max. :95.00 Max. :95.00
## Agama AI Peminatan
## Min. :60.00 Min. :60.00 Min. :60.00
## 1st Qu.:60.00 1st Qu.:60.50 1st Qu.:61.50
## Median :68.00 Median :71.00 Median :72.00
## Mean :71.77 Mean :73.09 Mean :74.17
## 3rd Qu.:79.50 3rd Qu.:84.50 3rd Qu.:83.50
## Max. :95.00 Max. :95.00 Max. :95.00
jumlah_IP <- table(IP)
barplot(
jumlah_IP,
main = "Distribusi IP Mahasiswa",
xlab = "IP",
ylab = "Jumlah Mahasiswa",
las = 2
)
Grafik distribusi IP mahasiswa menunjukkan bahwa nilai IP mahasiswa cukup bervariasi. Frekuensi tertinggi terdapat pada IP sekitar 2,35, dengan 5 mahasiswa, sedangkan nilai IP lainnya memiliki frekuensi yang lebih rendah.
Penggunaan bahasa R dalam memproses serta mengolah data akademik secara otomatis terbukti sangat efisien, terstruktur, dan presisi. Dengan memanfaatkan struktur data utama seperti data frame dan vector, seluruh informasi numerik dan variabel teks dapat tersusun secara rapi dan mudah dimanipulasi. Dengan menggunakan fungsi logika ifelse() yang digabungkan dengan perulangan for dapat mempermudah penyelesaian berbagai kondisi kriteria secara simultan, mulai dari penyesuaian batas minimal kelulusan remedial hingga pengelompokan predikat huruf dan bobot nilai. Ditambah dengan penggunaan fungsi agregasi seperti rowMeans() untuk menghitung rata-rata, serta sum() untuk menghitung Indeks Prestasi (IP) berbasis bobot SKS, seluruh alur evaluasi akademik dapat dieksekusi dengan cepat, konsisten, dan terbebas dari risiko kesalahan kalkulasi (human error).