
Mengubah data berdasarkan kategori sudah bisa kita terapakan menggunakan ifelse pada R. https://softscients.com/2020/04/11/buku-belajar-dasar-dasar-statistika-dengan-r-manipulasi-data-frame-dengan-dplyr/ yaitu pada Operasi Mutate dengan Syarat Kondisi If-else. Pada kasus tersebut ingin memberikan keterangan lulus dan tidak lulus berdasarkan nilai kategori tertentu / fixed.
Dengan menambahkan satu kolom yaitu operasi mutate() sekalian ditampilkan kolom keterangan yang memberikan informasi kelulusan jika nilai reratanya diatas 80
keterangan <-mutate(rerata_nilai,keterangan=ifelse(rerata>=80,'lulus','tidak lulus')) print(keterangan)
hasil
no mata_pelajaran jurusan kelas nilai1 nilai2 rerata keterangan 1 1 sejarah IPA 1A 89 87 88.0 lulus 2 2 sejarah IPA 2A 96 90 93.0 lulus 3 3 matematika IPA 1A 80 81 80.5 lulus 4 4 matematika IPA 2A 79 78 78.5 tidak lulus 5 5 sejarah IPS 1B 77 78 77.5 tidak lulus 6 6 sejarah IPS 1C 78 77 77.5 tidak lulus 7 7 sejarah IPS 2B 76 89 82.5 lulus 8 8 sejarah IPS 2C 87 98 92.5 lulus 9 9 akuntansi IPS 1B 88 79 83.5 lulus 10 10 akuntansi IPS 1C 95 75 85.0 lulus 11 11 akuntansi IPS 2B 94 80 87.0 lulus 12 12 akuntansi IPS 2C 91 97 94.0 lulus
Ataupun kalian juga bisa membuat if-else berkalang untuk menghasilkan nilai passing grade, misalkan passing grade mempunyai keterangan sebagai berikut
Seperti kode rumus yang ada di excel
grade<-mutate(rerata_nilai,grade=ifelse(rerata>=90,'A', ifelse(rerata>=85,'B', ifelse(rerata>=70,'C','D')))) print(grade)
hasil
no mata_pelajaran jurusan kelas nilai1 nilai2 rerata grade 1 1 sejarah IPA 1A 89 87 88.0 B 2 2 sejarah IPA 2A 96 90 93.0 A 3 3 matematika IPA 1A 80 81 80.5 C 4 4 matematika IPA 2A 79 78 78.5 C 5 5 sejarah IPS 1B 77 78 77.5 C 6 6 sejarah IPS 1C 78 77 77.5 C 7 7 sejarah IPS 2B 76 89 82.5 C 8 8 sejarah IPS 2C 87 98 92.5 A 9 9 akuntansi IPS 1B 88 79 83.5 C 10 10 akuntansi IPS 1C 95 75 85.0 B 11 11 akuntansi IPS 2B 94 80 87.0 B 12 12 akuntansi IPS 2C 91 97 94.0 A
Tentu hal diatas kurang efektif, bila data if then nya sangat banyak, contohnya sebagai berikut yang menggunakan nilai rentang
kiri kanan keterangan 1 50 60 C 2 61 70 B 3 71 80 A
Akan diberikan nilai B jika sebuah nilai mempunyai rentang 61 sampai dengan 70. Kalau menggunakan ifelse akan sangat menyita waktu. Misalkan kita mempunyai aturan range nilai sebagai berikut
kiri = c(50,61,71) kanan = c(60,70,80) keterangan = c('C','B','A') aturan.nilai = data.frame(kiri,kanan,keterangan) print(aturan.nilai)
Terdapat hasil ujian siswa
ujian = data.frame(nilai = c(55,70,75,50,61,65)) print(ujian)
nilai 1 55 2 70 3 75 4 50 5 61 6 65
Maka untuk membuat nilai kategori, kita bisa Mengubah Data Berdasarkan Range Kategori berikut secara efektif. Hal yang pertama dilakukan yaitu
- membuat empty data frame
- melakukan filtering sesuai syarat kondisi
- add row dan menyesuaikan hasil kolomnya
hasil = data.frame(nilai=double(),keterangan=character()) for(i in c(1:length(aturan.nilai$keterangan))){ buff = ujian %>% filter(nilai>=aturan.nilai$kiri[i] & nilai<=aturan.nilai$kanan[i]) hasil = hasil %>% add_row(nilai=buff$nilai,keterangan=aturan.nilai$keterangan[i]) } print(hasil)
hasil
nilai keterangan 1 55 C 2 50 C 3 70 B 4 61 B 5 65 B 6 75 A