Setup Menus in Admin Panel

swanstatistika02@gmail.com

Duplikat Data Menggunakan R

 

        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.

Juni 30, 2021
Copyright © 2018 PT. Angsa Statistika Indonesia