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

1. Pendahuluan

1.1 Pengantar R

​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)

1.2 Tujuan Pembelajaran

Tujuan dari praktikum ini adalah

  1. Memahami dan menerapkan konsep dasar pemrograman R, meliputi variabel, vektor, operator, dan data frame untuk mengolah data nilai akademik mahasiswa.
  2. Menerapkan percabangan menggunakan ifelse(), termasuk percabangan bertingkat, untuk menentukan kategori nilai mahasiswa.
  3. Mengolah dan menyesuaikan nilai mahasiswa berdasarkan ketentuan remedial yang telah ditetapkan.
  4. Menentukan nilai huruf dan bobot nilai setiap mata kuliah berdasarkan rentang nilai yang berlaku.
  5. Menghitung Indeks Prestasi (IP) mahasiswa berdasarkan bobot nilai dan jumlah SKS setiap mata kuliah.
  6. Menyajikan hasil pengolahan nilai akademik mahasiswa dalam bentuk tabel yang sistematis dan mudah dipahami.

1.3 Pemaparan Kasus

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

2. Konsep Dasar

2.1 Variabel

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

2.2 Operator

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

2.3 Vektor

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

2.4 Data Frame

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)
)

2.5 Percabangan Menggunakan 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"

3. Penyelesaian Kasus

3.1 Langkah 1: Menyiapkan Data Utama dan Vektor SKS

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:

  • data.frame() menyusun data mahasiswa dan nilai ke dalam bentuk tabel. 
  • sks menyimpan nilai kuintil SKS tiap mata kuliah, yang kemudian dijumlahkan menggunakan sum() untuk mendapatkan total_sks.

3.2 Langah 2: Pengolahan Nilai Remedial

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:

  • Fungsi ifelse(kondisi, nilai_jika_true, nilai_jika_false) menggantikan nilai di bawah atau sama dengan 60 menjadi 60, sedangkan nilai di atas 60 tetap.

3.3 Langkah 3: Menghitung Nilai Rata-rata

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.

3.4 Langkah 4: Menentukan Nilai Huruf dan Bobot

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.

3.5 Langkah 5: Menghitung Indeks Prestasi (IP)

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.

4. Analisis dan Pembahasan

4.1 Ringkasan Nilai 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

4.2 Diagram Batang Distribusi IP Mahasiswa

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.

5. Kesimpulan

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).