Mengubah Data Berdasarkan Range Kategori

By | March 31, 2022
984 Views

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

  1. membuat empty data frame
  2. melakukan filtering sesuai syarat kondisi
  3. 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

 

See also  Menangani Error pada Install Package di RStudio