
Pada sebuah dataset kadangkala tertidentifikasi terdapat data yang double (duplicate data) atau data yang sama. nah seringkali kita tidak menginginkan data double tersebut. Pada artikel ini kita akan belajar cara mengidentifikasi data yang sama dan menghapusnya. Ada beberapa cara untuk mengidentifikasi data yang sama, diantaranya dengan menggunakan fungsi duplicated(), unique(), & distinct() dari package dplyr. Referensi pada artikel ini menggunakan artikel datanovia.
Mengidentifikasi Data Duplikat pada Vektor
Misalkan data dalam bentuk Vektor, dapat di lakukan pengecekan dengan fungsi duplicated(), dimana akan menghasilkan FALSE dan TRUE, jika FALSE berarti data yang di identifikasi belum ada yang sama (double), jika TRUE berarti ada data yang sama sebelumnya.
d1 <- c(2,3,4,5,7,10,3,12,5,14,3)
duplicated(d1)
## [1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE TRUE
- Untuk mengetahui posisi data yang merupakan duplikat, bisa menggunakan which.
which(duplicated(d1))
## [1] 7 9 11
nilai tersebut menunjukkan posisi yang merupakan data duplikat yaitu pada indeks ke 7, 9 dan 11
- Untuk mengetahui data yang di duplikasi bisa menggunakan sintaks berikut:
d1[duplicated(d1)]
## [1] 3 5 3
Nilai tersebut menunjukkan bahwa data yang memiliki kesamaan nilai adalah angka 3 dan angka 5. Dimana angka 3 memiliki 3 nilai yang sama dan angka 5 memiliki 2 angka yang sama.
- Untuk menghapus (remove) data tersebut dari data awal bisa menggunakan sintaks berikut:
d1=d1[!duplicated(d1)]
d1
## [1] 2 3 4 5 7 10 12 14
Sintaks diatas, menggunakan tanda seru !, yang menunjukkan negasi atau menunjukkan bahwa data yang ingin di ambil adalah data selain data yang double/duplikat.
- Selain dengan fungsi duplicate() kita bisa juga menggunakan fungsi unique().
d1 <- c(2,3,4,5,7,10,3,12,5,14,3)
unique(d1)
## [1] 2 3 4 5 7 10 12 14
Bedanya dengan fungsi duplicate(), fungsi unique langsung menghapus data yang merupakan data duplikat, pada indeks selanjutnya. karena fungsi unique tidak menghasilkan data logical.
Mengidentifikasi Data Duplikat pada Dataframe
Untuk mengidentifikasi data yang double pada data frame, contoh pertama menggunakan fungsi duplicate() data yang digunakan bisa anda download pada link berikut data
datadu=read.csv('https://raw.github.com/sabil08/heroku/master/duplikat.csv')
head(datadu)
## id Name degree_level family_size gender age_cat marital_status
## 1 1 Elsa diploma 4 female >45 single
## 2 2 Nino university 5 male 35-44 married
## 3 3 Andin senior_high 4 female 18-24 single
## 4 4 Kiky university 3 female 25-34 married
## 5 5 Mirna university 3 female 25-34 married
## 6 6 Rosa university 6 female 25-34 single
## residence_type work_type salary
## 1 family jobless 149000
## 2 own full_time 330650
## 3 family student 79000
## 4 family full_time 156750
## 5 family full_time 349000
## 6 family full_time 59000
selanjutnya digunakan fungsi duplicate(), untuk mengecek data duplicate dan posisinya. fungsi ini digunakan pada variabel tertentu pada dataframe.
duplicated(datadu$Name)
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] TRUE TRUE TRUE TRUE TRUE
Untuk mengecek posisi data duplicate bisa menggunakan which()
which(duplicated(datadu$Name))
## [1] 13 14 15 16 17
menghapus data duplikat menggunakan fungsi duplicated()
datadu1<-datadu[!duplicated(datadu$Name),]
datadu1
## id Name degree_level family_size gender age_cat marital_status
## 1 1 Elsa diploma 4 female >45 single
## 2 2 Nino university 5 male 35-44 married
## 3 3 Andin senior_high 4 female 18-24 single
## 4 4 Kiky university 3 female 25-34 married
## 5 5 Mirna university 3 female 25-34 married
## 6 6 Rosa university 6 female 25-34 single
## 7 7 Maharani university 5 female 25-34 single
## 8 8 Larissa university 8 female 25-34 single
## 9 9 Aldebaran university 3 male 25-34 married
## 10 10 Sarah diploma 3 female 18-24 single
## 11 11 Ririn university 5 female 35-44 single
## 12 12 Rendy university 2 male 25-34 single
## residence_type work_type salary
## 1 family jobless 149000
## 2 own full_time 330650
## 3 family student 79000
## 4 family full_time 156750
## 5 family full_time 349000
## 6 family full_time 59000
## 7 family entrepreneur 49000
## 8 kost full_time 79200
## 9 family full_time 499000
## 10 rent full_time 424150
## 11 family full_time 160300
## 12 family part_time 119200
menghapus data duplikat menggunakan fungsi unique()
datadu2<-unique(datadu[,-1])
datadu2
## Name degree_level family_size gender age_cat marital_status
## 1 Elsa diploma 4 female >45 single
## 2 Nino university 5 male 35-44 married
## 3 Andin senior_high 4 female 18-24 single
## 4 Kiky university 3 female 25-34 married
## 5 Mirna university 3 female 25-34 married
## 6 Rosa university 6 female 25-34 single
## 7 Maharani university 5 female 25-34 single
## 8 Larissa university 8 female 25-34 single
## 9 Aldebaran university 3 male 25-34 married
## 10 Sarah diploma 3 female 18-24 single
## 11 Ririn university 5 female 35-44 single
## 12 Rendy university 2 male 25-34 single
## residence_type work_type salary
## 1 family jobless 149000
## 2 own full_time 330650
## 3 family student 79000
## 4 family full_time 156750
## 5 family full_time 349000
## 6 family full_time 59000
## 7 family entrepreneur 49000
## 8 kost full_time 79200
## 9 family full_time 499000
## 10 rent full_time 424150
## 11 family full_time 160300
## 12 family part_time 119200
pada saat menggunakan fungsi unique() yang harus diperhatikan adalah, semua variabel merupakan data yang sama untuk baris nya, sehingga jika ada variabel yang tidak sama, maka tidak akan di buang. contohnya pada kasus ini variabel id. sehingga pada variabel id dibuang terlebih dahulu kemudian menggunakan fungsi unique.
menghapus data duplikat menggunakan fungsi distinct() dari package dplyr
library (dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
datadu3<-datadu[,-1] %>% distinct()
datadu3
## Name degree_level family_size gender age_cat marital_status
## 1 Elsa diploma 4 female >45 single
## 2 Nino university 5 male 35-44 married
## 3 Andin senior_high 4 female 18-24 single
## 4 Kiky university 3 female 25-34 married
## 5 Mirna university 3 female 25-34 married
## 6 Rosa university 6 female 25-34 single
## 7 Maharani university 5 female 25-34 single
## 8 Larissa university 8 female 25-34 single
## 9 Aldebaran university 3 male 25-34 married
## 10 Sarah diploma 3 female 18-24 single
## 11 Ririn university 5 female 35-44 single
## 12 Rendy university 2 male 25-34 single
## residence_type work_type salary
## 1 family jobless 149000
## 2 own full_time 330650
## 3 family student 79000
## 4 family full_time 156750
## 5 family full_time 349000
## 6 family full_time 59000
## 7 family entrepreneur 49000
## 8 kost full_time 79200
## 9 family full_time 499000
## 10 rent full_time 424150
## 11 family full_time 160300
## 12 family part_time 119200
menghapus data duplikat menggunakan fungsi distinct() berdasarkan variabel tertentu
library (dplyr)
datadu3<-datadu%>% distinct(datadu$Name, .keep_all = TRUE)
datadu3
## id Name degree_level family_size gender age_cat marital_status
## 1 1 Elsa diploma 4 female >45 single
## 2 2 Nino university 5 male 35-44 married
## 3 3 Andin senior_high 4 female 18-24 single
## 4 4 Kiky university 3 female 25-34 married
## 5 5 Mirna university 3 female 25-34 married
## 6 6 Rosa university 6 female 25-34 single
## 7 7 Maharani university 5 female 25-34 single
## 8 8 Larissa university 8 female 25-34 single
## 9 9 Aldebaran university 3 male 25-34 married
## 10 10 Sarah diploma 3 female 18-24 single
## 11 11 Ririn university 5 female 35-44 single
## 12 12 Rendy university 2 male 25-34 single
## residence_type work_type salary datadu$Name
## 1 family jobless 149000 Elsa
## 2 own full_time 330650 Nino
## 3 family student 79000 Andin
## 4 family full_time 156750 Kiky
## 5 family full_time 349000 Mirna
## 6 family full_time 59000 Rosa
## 7 family entrepreneur 49000 Maharani
## 8 kost full_time 79200 Larissa
## 9 family full_time 499000 Aldebaran
## 10 rent full_time 424150 Sarah
## 11 family full_time 160300 Ririn
## 12 family part_time 119200 Rendy
keterangan .keep_all=TRUE, ditambahkan agar semua data tetap diikut sertakan.
// add bootstrap table styles to pandoc tables
function bootstrapStylePandocTables() {
$('tr.odd').parent('tbody').parent('table').addClass('table table-condensed');
}
$(document).ready(function () {
bootstrapStylePandocTables();
});