Tutorial: Merapikan Format Nomor Induk Karyawan dengan R
Suatu sore, saya ditelepon oleh salah seorang teman saya. Dia mengatakan memiliki masalah terkait data pegawai sebagai berikut:
nik | nama |
---|---|
3320 | Ricki |
8009 | Claire |
4401 | Ryan |
8859 | Sepehr |
5135 | Shabnam |
3736 | Alexis |
5896 | Chakotah |
4023 | Darius |
5833 | Brisha |
4120 | Kenny |
63704 | Lily |
97754 | Dalayni |
52859 | Sara |
57337 | Julio |
40313 | Brian |
33678 | Zaidaan |
89911 | Clara |
8202837 | Ashtyn |
6983645 | Victor |
2747156 | Monica |
9672522 | Jesus |
4323306 | Brett |
6735237 | Shamaja |
7630723 | Adrian |
6326372 | Riley |
Data di atas adalah tarikan dari sistem IT di kantornya. Lalu dia berujar bahwa secara sistem kepegawaian, nik
seharusnya memiliki 10 digits. Sebagai contoh nik
3320 seharusnya dituliskan 0000003320.
Penulisan nik
pada data di atas terjadi karena nik
dituliskan
sebagai numeric
di Ms. Excel sehingga digit 0-nya hilang. Dia meminta bantuan kepada saya untuk bisa mencari cara agar mengubahnya ke format yang diinginkan.
Lantas bagaimana agar kita bisa menambahkan 0 sesuai dengan kebutuhan hingga 10 digits dengan mudah dan cepat dengan R?
Langkah 1
Kita ambil contoh satu dummy nik
sebagi berikut:
nik = 1234
nik
## [1] 1234
Langkah 2
Kita ubah nik
menjadi character
.
nik = as.character(nik)
nik
## [1] "1234"
Langkah 3
Kita hitung ada berapa digits dari nik
tersebut. Lalu kita tambahkan
0 kekurangannya.
digit_nik = stringr::str_length(nik)
digit_kurang = 10 - digit_nik
kurang = rep(0,digit_kurang)
kurang = paste(kurang,collapse = "")
kurang
## [1] "000000"
Langkah 4
Sekarang kita tambahkan kekurangan 0 ke nik
awalnya.
nik_baru = paste0(kurang,nik)
nik_baru
## [1] "0000001234"
Function Akhir
Dari langkah-langkah yang telah disebutkan di atas, kita akan membuat function untuk melakukan transformasi seperti di atas.
ubah_nik = function(nik){
nik = as.character(nik)
digit_nik = stringr::str_length(nik)
digit_kurang = 10 - digit_nik
kurang = rep(0,digit_kurang)
kurang = paste(kurang,collapse = "")
nik_baru = paste0(kurang,nik)
return(nik_baru)
}
Sekarang kita run untuk semua datanya.
data %>%
mutate(nik_transformed = sapply(nik,ubah_nik))
## nik nama nik_transformed
## 1 3320 Ricki 0000003320
## 2 8009 Claire 0000008009
## 3 4401 Ryan 0000004401
## 4 8859 Sepehr 0000008859
## 5 5135 Shabnam 0000005135
## 6 3736 Alexis 0000003736
## 7 5896 Chakotah 0000005896
## 8 4023 Darius 0000004023
## 9 5833 Brisha 0000005833
## 10 4120 Kenny 0000004120
## 11 63704 Lily 0000063704
## 12 97754 Dalayni 0000097754
## 13 52859 Sara 0000052859
## 14 57337 Julio 0000057337
## 15 40313 Brian 0000040313
## 16 33678 Zaidaan 0000033678
## 17 89911 Clara 0000089911
## 18 8202837 Ashtyn 0008202837
## 19 6983645 Victor 0006983645
## 20 2747156 Monica 0002747156
## 21 9672522 Jesus 0009672522
## 22 4323306 Brett 0004323306
## 23 6735237 Shamaja 0006735237
## 24 7630723 Adrian 0007630723
## 25 6326372 Riley 0006326372