Belajar R-Manipulasi Data Frame dengan dplyr
Dplyr adalah package yang sangat powerfull ketika kalian bekerja menggunakan data frame yang berguna untuk operasi manipulasi data. Package dplyr sangat populer digunakan oleh kalangan pengguna bahasa R yang ditulis oleh programmer R bernama Hadley Wickham yang juga menulis banyak package terkenal lainnya seperti ggplot dan tidyverse.
Mengapa menggunakan dplyr
Contents
- 1 Mengapa menggunakan dplyr
- 2 Install dan loading package
- 3 Daftar Perintah dplyr
- 4 Dataset
- 5 Operasi properties
- 6 Pengurutan data / Sorting
- 7 Operasi Select
- 8 Operasi Filtering
- 9 Mutate
- 10 Operasi Mutate dengan Syarat Kondisi If-else
- 11 Operasi Piping
- 12 Operasi Group_by
- 13 Empty Data Frame dan Add row
- 14 Menghapus baris / remove /delete row
Dplyr datang dengan banyak function seperti layaknya bahasa SQL yaitu filtering, selecting, sorting, adding, deleting, joining serta agregating yang sangat mudah dilakukan tanpa ribet bahkan dengan pipping kalian menggabungkan banyak operasi dalam satu kode saja bahkan kalau kalian menggunakan matlab seperti table ataupun Python dengan Pandas nya, maka dplyr jauh lebih dari itu yaitu sangat intuitif sekali. Apalagi kalau kalian yang sudah mengenal / terbiasa menggunakan perintah SQL, maka akan terbiasa menggunakan perintah-perintah dplyr. Sebelum kalian belajar package dplyr tentu ada beberapa hal yang harus kalian pahami mengenai operator boolean disini serta loading dataset disini.
Pengalaman penulis menggunakan dplyr untuk mempercepat analisis sebuah data sangat disarankan kalian menggunakan package ini, selain ringan dan tidak perintah-perintah yang digunakan mudah dipahami juga tersediannya operasi pipping yaitu menggabungkan beberapa operasi menjadi satu perintah berkesinambungan.
Install dan loading package
Package ini sudah tersedia di C-RAN. Untuk proses install dan loading package seperti biasa dengan perintah berikut
install.packages("dplyr") library(dplyr)
Pastikan pc/laptop kalian sudah terhubung ke internet, atau kalian baca lagi mengenai cara install package di R
Daftar Perintah dplyr
Nama perintah yang digunakan mencerminkan kegunaan dari perintah itu sendiri. Berikut beberapa perintah penting yang sering digunakan untuk melakukan manipulasi data frame
Apalagi kalau sudah memahami jenis-jenis operator di Bahasa R tentu kalian akan terkejut (mengingat background penulis banyak menggunakan SPPS sebelumnya) betapa mudahnya melakukan grouping sebuah dataset yang berbanding terbalik seperti tools WEKA, ORANGE, Octave. Banyak sekali perintah-perintah selain 7 diatas, tapi dengan mempelajari dasar-dasar 7 perintah tersebut kalian sudah sangat terbantu melakukan analisis dan manipulasi data frame.
Dataset
Penulis sudah membuat dataset simple dan tidak banyak kolom untuk mempermudah visualisasi penggunaan package dplyr yang disimpan dengan format csv dengan nama uas.csv. Dataset tersebut merupakan data nilai ujian akhir sekolah dengan beberapa mata pelajaran untuk jurusan IPA dan IPS, oiya untuk kolom nilai 2 yang merupakan nilai ulangan ke 1 dan 2. Download dataset uas
Loading dataset menggunakan perintah yang telah kita bahas sebelumnya yaitu read.csv()
uas <- read.csv('uas.csv') print(head(uas))
hasil
no mata_pelajaran jurusan kelas nilai1 nilai2 1 1 sejarah IPA 1A 89 87 2 2 sejarah IPA 2A 96 90 3 3 matematika IPA 1A 80 81 4 4 matematika IPA 2A 79 78 5 5 sejarah IPS 1B 77 78 6 6 sejarah IPS 1C 78 77
Operasi properties
Sebelum melihat operasi lebih lanjut, ada baiknya kalian harus mengetahui properties dari sebuah dataset seperti nama kolom, dimensi baris-kolom, serta data-data yang terkandung didalamnya.
Mendapatkan nama kolom dengan perintah colnames()
colnames(uas)
hasil
[1] "no" "mata_pelajaran" "jurusan" "kelas" "nilai1" "nilai2"
Mendapatkan jumlah baris dan kolom dengan perintah dim()
print(dim(uas))
hasil
[1] 12 6
dataset diatas ternyata terdiri dari 12 baris dan 6 kolom.
Mendapatkan data yang unik tiap kolom dengan 2 perintah yang digabungkan yaitu levels() dan factor(). Misalkan untuk mata_pelajaran terdapat 3 mata pelajaran
levels(factor(uas$mata_pelajaran))
hasil
"akuntansi" "matematika" "sejarah"
Pengurutan data / Sorting
Adakalanya kalian ingin menampilkan sebuah data berdasarkan urutan / sorting, dengan menggunakan operasi select() dan arrange() hal tersebut sangat mudah dilakukan
nilai_urutan<-arrange(select(uas,no,mata_pelajaran,jurusan,kelas,nilai1),desc(nilai1)) print(nilai_urutan)
hasil
no mata_pelajaran jurusan kelas nilai1 1 2 sejarah IPA 2A 96 2 10 akuntansi IPS 1C 95 3 11 akuntansi IPS 2B 94 4 12 akuntansi IPS 2C 91 5 1 sejarah IPA 1A 89 6 9 akuntansi IPS 1B 88 7 8 sejarah IPS 2C 87 8 3 matematika IPA 1A 80 9 4 matematika IPA 2A 79 10 6 sejarah IPS 1C 78 11 5 sejarah IPS 1B 77 12 7 sejarah IPS 2B 76
Operasi Select
Operasi select digunakan untuk menyeleksi kolom-kolom yang telah ditentukan oleh kita sebelumnya. Misalkan hanya untuk menampilkan mata_pelajaran, jurusan
nilai_IPA_IPS<- select(uas,c(mata_pelajaran,jurusan)) print(nilai_IPA_IPS)
hasil
mata_pelajaran jurusan 1 sejarah IPA 2 sejarah IPA 3 matematika IPA 4 matematika IPA 5 sejarah IPS 6 sejarah IPS 7 sejarah IPS 8 sejarah IPS 9 akuntansi IPS 10 akuntansi IPS 11 akuntansi IPS 12 akuntansi IPS
Operasi Filtering
Operasi filtering digunakan untuk memfilter dengan syarat kondisi tertentu seperti menggunakan operator boolean dan perbandingan. Misalkan menampilkan jurusan==’IPA’ dan mata_pelajaran==’sejarah’
sejarah_IPA<-filter(uas,jurusan=='IPA' & mata_pelajaran=='sejarah') print(sejarah_IPA)
hasil
no mata_pelajaran jurusan kelas nilai1 nilai2 1 1 sejarah IPA 1A 89 87 2 2 sejarah IPA 2A 96 90 3 8 sejarah IPS 2C 87 98 4 12 akuntansi IPS 2C 91 97
Mutate
Digunakan untuk menambahkan kolom, misalkan akan menambah kolom baru yang merupakan
rerata_nilai <-mutate(uas,rerata = (nilai1+nilai2)*0.5) print(rerata_nilai)
hasil
no mata_pelajaran jurusan kelas nilai1 nilai2 rerata 1 1 sejarah IPA 1A 89 87 88.0 2 2 sejarah IPA 2A 96 90 93.0 3 3 matematika IPA 1A 80 81 80.5 4 4 matematika IPA 2A 79 78 78.5 5 5 sejarah IPS 1B 77 78 77.5 6 6 sejarah IPS 1C 78 77 77.5 7 7 sejarah IPS 2B 76 89 82.5 8 8 sejarah IPS 2C 87 98 92.5 9 9 akuntansi IPS 1B 88 79 83.5 10 10 akuntansi IPS 1C 95 75 85.0 11 11 akuntansi IPS 2B 94 80 87.0 12 12 akuntansi IPS 2C 91 97 94.0
Operasi Mutate dengan Syarat Kondisi If-else
Terasa kurang lengkap jika hanya menambahkan 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
Operasi Piping
Yaitu menggabungkan beberapa operasi menjadi satu dengan perintah %>%, misalkan operasi select dan filtering
nilai_IPA<-uas %>% select(c(mata_pelajaran,jurusan,kelas,nilai1)) %>% filter(jurusan=='IPA') print(nilai_IPA)
hasil
mata_pelajaran jurusan kelas nilai1 1 sejarah IPA 1A 89 2 sejarah IPA 2A 96 3 matematika IPA 1A 80 4 matematika IPA 2A 79
Operasi piping merupakan salah satu keunggulan di R sehingga mempersingkat kode dan lebih rapi tentunya. Kebanyakan operasi piping akan banyak melibatkan beberapa operasi menjadi satu
Operasi Group_by
Contoh lain menggunakan operasi piping yaitu dengan melibatkan operasi group_by. Misalkan untuk mengetahui nilai tertinggi di masing-masing pelajaran, maka kalian harus menggunakan operasi group by.
nilai_tertinggi_mp<- uas %>% select(c(no,mata_pelajaran,jurusan,kelas,nilai1)) %>% group_by(mata_pelajaran) %>% filter(nilai==max(nilai)) print(nilai_tertinggi_mp)
hasil
no mata_pelajaran jurusan kelas nilai1 <int> <fct> <fct> <fct> <int> 1 2 sejarah IPA 2A 96 2 3 matematika IPA 1A 80 3 10 akuntansi IPS 1C 95
Ada 3 mata pelajaran dengan masing-masing tertinggi seperti diatas, ternyata nilai sejarah tertinggi diraih oleh jurusan IPA pada kelas 2A. Atau kalian ingin tahu nilai tertinggi oleh masing-masing jurusan.
nilai_tertinggi_jurusan<- uas %>% select(c(no,mata_pelajaran,jurusan,kelas,nilai1)) %>% group_by(jurusan) %>% filter(nilai1==max(nilai1)) print(nilai_tertinggi_jurusan)
hasil
no mata_pelajaran jurusan kelas nilai1 <int> <fct> <fct> <fct> <int> 1 2 sejarah IPA 2A 96 2 10 akuntansi IPS 1C 95
Empty Data Frame dan Add row
Terkadang kita butuh membuat tabel kosong yang berisi hanya nama kolom, karena nanti ada add_row
data = data.frame(no=double(),nama=character()) data = data%>%add_row(no=1,nama='bejo') data = data%>%add_row(no=2,nama='bintang') data
Menghapus baris / remove /delete row
Untuk menghapus baris, caranya cukup mudah, misalkan untuk data diatas akan dihapus baris ke 2
data = data[-2,]