::opts_chunk$set(
knitrmessage = FALSE, warning = FALSE
)
library(tidyverse)
library(readxl)
library(here)
library(magrittr)
Kertas Kerja EMON
Bulan Mei Tahun 2025
Pendahuluan
Selamat datang di Kertas Kerja EMON bulan mei tahun 2025`. Bulan ini terdapat beberapa pengembangan script dari bulan lalu.
Input Data
<- here("data/Rekap Presensi Satker 1748483117182.xlsx")
data_presensi <- here("data/Form Penilaian Employee Of The Month BPS Kabupaten Sikka(1-747).xlsx")
data_response
<-
tbl_presensi_all read_xlsx(data_presensi, skip = 6) |>
::clean_names()
janitor
<-
tbl_response_raw read_xlsx(data_response) |>
::clean_names() |>
janitor# tanggal surat pemilihan emon maret diterbit
filter(waktu_mulai >= "2025-05-26") |>
#rename karena namanya panjang
rename(
ketua_pmo = pegawai_yang_menilai,
pegawai = pegawai_yang_dinilai_masing_masing_ketua_tim_menilai_anggotanya,
mutu = mutu_hasil_kerja,
pengetahuan = pengetahuan_tentang_tugas_dan_tanggung_jawab,
produktivitas = produktivitas_jam_kerja
)
Filtering
Ada beberapa penilaian yang tidak valid, seperti pada ID 746 dimana pegawai yang menilai dan pegawai yang dinilai adalah sama. Come to think of it, lebih baik ini dibuatkan 1 daftarnya tersendiri.
Selain itu, terdapat pegawai yang tidak diikutsertakan dalam penilaian EMON. Pegawai tersebut antara lain;
Afriani Niana Danus (NIP 340057264), sebab sedang menjalani Tugas Belajar
Kristanto Setyo Utomo (NIP 340019275), sebab jabatannya sebagai Kepala BPS Kabupaten Sikka.
Sehingga kita perlu membuang baris tersebut di dalam tabel presensi. Tabel response memang tidak mengikutsertakan Afriani Niana Danus maupun Kristanto Setyo Utomo, sehingga kita tidak perlu melakukan filtering.
<-
tbl_presensi |>
tbl_presensi_all filter(nip != "340057264" & nip != "340019275")
<-
tbl_response_exc here("data/emon_db_pegawai.xlsx") |>
read_xlsx(sheet = "id_excluded")
<-
tbl_response_cleaned |>
tbl_response_raw anti_join(tbl_response_exc, by = join_by(id))
Tabel pembantu
Tabel ini dipakai sebab variabel nama pegawai dari file presensi dan file response tidaklah sama. file presensi menggunakan nama yang tidak menganduk gelar, sedangkan file response menggunakan nama yang memiliki gelar
<- here("data/emon_db_pegawai.xlsx") |> read_xlsx() emon_db_pegawai
Hitung poin Presensi
Setelah, data presensi dan data response telah bersih, kita bisa lanjut untuk menghitung indeks emon. Kita mulai dengan menghitung poin presensi.
Kali ini kita akan lebih rigid dan mengikuti langkah-langkah dari KAK. Berdasarkan KAK Pemilihan EMON, nilai indeks emon dihitung menggunakan 3 kriteria besar.
- Administrasi (bobot 20%)
- Kinerja (bobot 40%)
- Core Value ASN Berakhlak (bobot 40%)
Penilaian Administrasi
Administrasi terdiri dari 2 sub bagian penilaian yakni
- Kedisiplinan, diukur dengan jumlahnya pelanggaran ringan, pelanggaran sedang, dan pelanggaran berat pada bulan maret.
- kehadiran, diukur menggunakan kehadiran, keterlambatan (TL dan PSW) selama sebulan.
Kehadiran memiliki bobot sebesar 0,4 dan kedisiplinan bobotnya adalah 0,6.
Dalam aspek kedisiplinan, tidak ada surat pelanggaran yang dikeluarkan tim subbagian umum untuk bulan maret, sehingga semua pegawai mendapatkan poin penuh (a.k.a 3)
<-
tbl_aspek_administrasi |>
tbl_presensi select(nip, nama_presensi = nama, hk, psw, ht) |>
# setting supaya hk, psw, dan ht bisa dilakukan operasi matematika
mutate(
hk = as.integer(hk),
psw = as.integer(psw),
ht = as.integer(ht)
|>
) # hitung persentasi kehadiran.
# ht = jumlah hari terlambat (TL)
# psw = jumlah hari pulang sebelum waktu (PSW)
# hk = jumlah hari kerja
mutate(persen = 100 - ((ht + psw) / hk * 100)) |>
# kehadiran < 95% dapat nilai 0
# 95.0 < kehadiran < 99.99 dapat nilai 1
# sisanya a.k.a kehadiran 100% dapat nilai 3
mutate(
kehadiran = case_when(
<= 94.99 ~ 0,
persen |> between(95.00, 99.99) ~ 1,
persen .default = 3
),kedisiplinan = 3 # semua pegawai tidak mendapatkan teguran ringan, sedang, maupun berat.
|>
) mutate(
aspek_administrasi = (kehadiran * 0.4 + kedisiplinan * 0.6) * 0.2 # bobot aspek 20%
)
|>
tbl_aspek_administrasi arrange(desc(aspek_administrasi)) |>
::kable(caption = "Tabel Aspek Administrasi") knitr
nip | nama_presensi | hk | psw | ht | persen | kehadiran | kedisiplinan | aspek_administrasi |
---|---|---|---|---|---|---|---|---|
340018094 | Yohanes Lada Regaletha | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340018763 | Valentinus Nong Sina Gharu | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340019681 | Maria Diaz De Rozari | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340053753 | Fransiskus Saverius Soba | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340053757 | Kasianus Vinsensius Wero | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340053759 | Klara Yosefa Edralin Paoe | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340053779 | Yoseph Yakobus Dedo | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340055195 | Averinus Emanuel | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340055215 | Imelda Sandrawati Ambot | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340055228 | Maria Helionora Yulinda Sair | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340057474 | Maria Carlin Bepsi Costa | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340059028 | Wihelmus Wedo | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340059848 | Clementine Mursitadewi Riantoby | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340059849 | Cornelia Christina Temu | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340059855 | Felia Tifani Cornelia Klau | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340060406 | Maria Megachita Da Silva | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340060409 | Maryo Yoseph Ambarto Dwi Sili Osan | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340061169 | Alvino Alexandro Yappy | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340061365 | Juliana Marbun | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340062383 | Choirunnisa Jati Safitri | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340063388 | Neka Putri Fardila | 17 | 0 | 0 | 100.00000 | 3 | 3 | 0.60 |
340019825 | Sekolastika Maria Filipensa Naru | 17 | 0 | 1 | 94.11765 | 0 | 3 | 0.36 |
Aspek Kinerja
<- function(x) {
fx <-
y case_when(
== "Sangat Baik" ~ 3,
x == "Baik" ~ 1,
x == "Kurang Baik" ~ 0,
x .default = NA
)return(y)
}
<- function(x, bobot) {
hitung <- fx(x) * bobot
y return(y)
}
<-
tbl_aspek_kinerja |>
tbl_response_cleaned select(
pegawai,
mutu,
produktivitas,
pengetahuan,
kehandalan,waktu = ketepatan_waktu,
inisiatif,
kerja_sama|>
) mutate(
mutu = mutu |> hitung(10/100), # bobot 10%
produktivitas = produktivitas |> hitung(10/100), # bobot 10%
pengetahuan = pengetahuan |> hitung(10/100), # bobot 10%
kehandalan = kehandalan |> hitung(10/100), # bobot 10%
waktu = waktu |> hitung(30/100), # bobot 30%
inisiatif = inisiatif |> hitung(10/100), # bobot 10%
kerja_sama = kerja_sama |> hitung(20/100) # bobot 20%
|>
) summarise(
.by = pegawai,
across(.cols = mutu:kerja_sama, .fns = ~ mean(.x, na.rm = TRUE))
|>
) mutate(
aspek_kinerja = (mutu + produktivitas + pengetahuan + kehandalan + waktu + inisiatif + kerja_sama) * 0.4 # bobot 40%
)
|>
tbl_aspek_kinerja arrange(desc(aspek_kinerja)) |>
::kable(caption = "Tabel Aspek Kinerja") knitr
pegawai | mutu | produktivitas | pengetahuan | kehandalan | waktu | inisiatif | kerja_sama | aspek_kinerja |
---|---|---|---|---|---|---|---|---|
Juliana Marbun A. Md | 0.3000000 | 0.3000000 | 0.3000000 | 0.3000000 | 0.9 | 0.3000000 | 0.6000000 | 1.2000000 |
Neka Putri Fardila,S.Tr.Stat. | 0.2333333 | 0.3000000 | 0.2333333 | 0.2333333 | 0.7 | 0.2333333 | 0.6000000 | 1.0133333 |
Maryo Yoseph Ambarto Dwi Sili Osan A.Md.Stat | 0.2000000 | 0.2000000 | 0.3000000 | 0.2000000 | 0.6 | 0.3000000 | 0.6000000 | 0.9600000 |
Cornelia Christina Temu A.Md.Stat. | 0.2333333 | 0.2333333 | 0.2333333 | 0.1666667 | 0.7 | 0.2333333 | 0.4666667 | 0.9066667 |
Clementine Mursitadewi Riantoby A.Md.Stat. | 0.3000000 | 0.3000000 | 0.2000000 | 0.2000000 | 0.6 | 0.2000000 | 0.4000000 | 0.8800000 |
Yohanes Lada Regaletha | 0.2000000 | 0.1000000 | 0.3000000 | 0.2000000 | 0.6 | 0.2000000 | 0.6000000 | 0.8800000 |
Maria Carlin Bepsi Costa SST | 0.3000000 | 0.2000000 | 0.2000000 | 0.3000000 | 0.6 | 0.2000000 | 0.4000000 | 0.8800000 |
Felia Tifani Cornelia Klau A.Md.Stat. | 0.3000000 | 0.2000000 | 0.2000000 | 0.3000000 | 0.6 | 0.2000000 | 0.4000000 | 0.8800000 |
Maria Megachita Da Silva A.Md.Stat | 0.2000000 | 0.2000000 | 0.2000000 | 0.3000000 | 0.6 | 0.2000000 | 0.4000000 | 0.8400000 |
Imelda Sandrawati Ambot S.Si | 0.2000000 | 0.2000000 | 0.2000000 | 0.3000000 | 0.6 | 0.2000000 | 0.4000000 | 0.8400000 |
Maria Diaz De Rozari | 0.1000000 | 0.3000000 | 0.3000000 | 0.3000000 | 0.3 | 0.1000000 | 0.6000000 | 0.8000000 |
Kasianus Vinsensius Wero S.E | 0.1000000 | 0.1000000 | 0.1000000 | 0.3000000 | 0.9 | 0.1000000 | 0.2000000 | 0.7200000 |
Choirunnisa Jati Safitri,S.Tr.Stat | 0.2000000 | 0.2000000 | 0.2000000 | 0.2000000 | 0.6 | 0.2000000 | 0.2000000 | 0.7200000 |
Sekolastika Maria Filipensa Naru SE | 0.2000000 | 0.1000000 | 0.2000000 | 0.2000000 | 0.3 | 0.2000000 | 0.4000000 | 0.6400000 |
Alvino Alexandro Yappy A.Md | 0.3000000 | 0.3000000 | 0.1000000 | 0.1000000 | 0.3 | 0.1000000 | 0.2000000 | 0.5600000 |
Wihelmus Wedo S.Tr.Stat | 0.1000000 | 0.1000000 | 0.1000000 | 0.3000000 | 0.3 | 0.1000000 | 0.2000000 | 0.4800000 |
Valentinus Nong Sina Gharu | 0.1666667 | 0.1666667 | 0.1000000 | 0.1000000 | 0.3 | 0.1000000 | 0.2000000 | 0.4533333 |
Averinus Emanuel S.Kom | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.3 | 0.1000000 | 0.2000000 | 0.4000000 |
Fransiskus Saverius Soba S.Si | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.3 | 0.1000000 | 0.2000000 | 0.4000000 |
Klara Yosefa Edralin Paoe S.E | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.3 | 0.1000000 | 0.2000000 | 0.4000000 |
Yoseph Yakobus Dedo S.E | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.3 | 0.1000000 | 0.2000000 | 0.4000000 |
Maria Helionora Yulinda Sair S.E. | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.0 | 0.1000000 | 0.2000000 | 0.2800000 |
Aspek Core Value BerAKHLAK
Penilaian Nilai BerAKHLAK adalah penilaian yang diambil dari nilai-nilai core value ASN. Bobot untuk aspek ini adalah 40 persen. Untuk rincian bobot pembentuk aspek ini bisa dilihat di KAK.
<-
tbl_aspek_berakhlak |>
tbl_response_cleaned select(
pegawai,Ber = berorientasi_pelayanan,
A1 = akuntabel,
K1 = kompeten,
H = harmonis,
L = loyal,
A2 = adaptif,
K2 = kolaboratif
|>
) mutate(
Ber = Ber |> hitung(10/100), # bobot 10%
A1 = A1 |> hitung(10/100), # bobot 10%
K1 = K1 |> hitung(10/100), # bobot 10%
H = H |> hitung(10/100), # bobot 10%
L = L |> hitung(10/100), # bobot 10%
A2 = A2 |> hitung(30/100), # bobot 30%
K2 = K2 |> hitung(20/100) # bobot 20%
|>
) summarise(
.by = pegawai,
across(.fns = ~ mean(.x, na.rm = TRUE))
|>
) mutate(
aspek_berakhlak = (Ber + A1 + K1 + H + L + A2 + K2) * 0.4 # bobot aspek 40%
)
|>
tbl_aspek_berakhlak arrange(desc(aspek_berakhlak)) |>
::kable(caption = "Tabel Aspek BerAKHLAK") knitr
pegawai | Ber | A1 | K1 | H | L | A2 | K2 | aspek_berakhlak |
---|---|---|---|---|---|---|---|---|
Clementine Mursitadewi Riantoby A.Md.Stat. | 0.3000000 | 0.3000000 | 0.3000000 | 0.3000000 | 0.3000000 | 0.9 | 0.6000000 | 1.2000000 |
Juliana Marbun A. Md | 0.3000000 | 0.3000000 | 0.2000000 | 0.3000000 | 0.3000000 | 0.9 | 0.6000000 | 1.1600000 |
Alvino Alexandro Yappy A.Md | 0.2000000 | 0.3000000 | 0.3000000 | 0.2000000 | 0.3000000 | 0.6 | 0.6000000 | 1.0000000 |
Neka Putri Fardila,S.Tr.Stat. | 0.2333333 | 0.2333333 | 0.2333333 | 0.2333333 | 0.2333333 | 0.7 | 0.6000000 | 0.9866667 |
Maria Diaz De Rozari | 0.3000000 | 0.3000000 | 0.3000000 | 0.3000000 | 0.3000000 | 0.3 | 0.6000000 | 0.9600000 |
Maryo Yoseph Ambarto Dwi Sili Osan A.Md.Stat | 0.2000000 | 0.2000000 | 0.2000000 | 0.3000000 | 0.2000000 | 0.6 | 0.6000000 | 0.9200000 |
Cornelia Christina Temu A.Md.Stat. | 0.2333333 | 0.2333333 | 0.2333333 | 0.2333333 | 0.2333333 | 0.5 | 0.4666667 | 0.8533333 |
Yohanes Lada Regaletha | 0.2000000 | 0.2000000 | 0.3000000 | 0.2000000 | 0.2000000 | 0.6 | 0.4000000 | 0.8400000 |
Maria Carlin Bepsi Costa SST | 0.2000000 | 0.2000000 | 0.2000000 | 0.2000000 | 0.2000000 | 0.6 | 0.4000000 | 0.8000000 |
Felia Tifani Cornelia Klau A.Md.Stat. | 0.2000000 | 0.2000000 | 0.2000000 | 0.2000000 | 0.2000000 | 0.6 | 0.4000000 | 0.8000000 |
Imelda Sandrawati Ambot S.Si | 0.2000000 | 0.2000000 | 0.2000000 | 0.2000000 | 0.2000000 | 0.6 | 0.4000000 | 0.8000000 |
Maria Megachita Da Silva A.Md.Stat | 0.2000000 | 0.1000000 | 0.2000000 | 0.2000000 | 0.2000000 | 0.6 | 0.4000000 | 0.7600000 |
Choirunnisa Jati Safitri,S.Tr.Stat | 0.2000000 | 0.2000000 | 0.2000000 | 0.1000000 | 0.2000000 | 0.6 | 0.4000000 | 0.7600000 |
Valentinus Nong Sina Gharu | 0.1666667 | 0.1666667 | 0.1666667 | 0.1666667 | 0.1666667 | 0.5 | 0.3333333 | 0.6666667 |
Sekolastika Maria Filipensa Naru SE | 0.2000000 | 0.1000000 | 0.2000000 | 0.2000000 | 0.2000000 | 0.3 | 0.4000000 | 0.6400000 |
Averinus Emanuel S.Kom | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.3 | 0.2000000 | 0.4000000 |
Kasianus Vinsensius Wero S.E | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.3 | 0.2000000 | 0.4000000 |
Klara Yosefa Edralin Paoe S.E | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.3 | 0.2000000 | 0.4000000 |
Maria Helionora Yulinda Sair S.E. | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.3 | 0.2000000 | 0.4000000 |
Wihelmus Wedo S.Tr.Stat | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.3 | 0.2000000 | 0.4000000 |
Yoseph Yakobus Dedo S.E | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.3 | 0.2000000 | 0.4000000 |
Fransiskus Saverius Soba S.Si | 0.1000000 | 0.1000000 | 0.1000000 | 0.1000000 | 0.0000000 | 0.3 | 0.2000000 | 0.3600000 |
Indeks EMON
Setelah menghitung nilai masing-masing aspek, kita bisa menghitung nilai Indeks EMON. Untuk itu, kita perlu melakukan join.
<-
tbl_aspek_joined |>
tbl_aspek_kinerja full_join(tbl_aspek_berakhlak, by = join_by(pegawai)) |>
left_join(emon_db_pegawai, by = join_by(pegawai == nama_response)) |>
full_join(tbl_aspek_administrasi, by = join_by(nip, nama_presensi))
<-
tbl_emon |>
tbl_aspek_joined mutate(indeks_emon = aspek_administrasi + aspek_kinerja + aspek_berakhlak) |>
select(nama_presensi, contains("aspek"), indeks_emon) |>
arrange(desc(indeks_emon))
::kable(tbl_emon) knitr
nama_presensi | aspek_kinerja | aspek_berakhlak | aspek_administrasi | indeks_emon |
---|---|---|---|---|
Juliana Marbun | 1.2000000 | 1.1600000 | 0.60 | 2.96 |
Clementine Mursitadewi Riantoby | 0.8800000 | 1.2000000 | 0.60 | 2.68 |
Neka Putri Fardila | 1.0133333 | 0.9866667 | 0.60 | 2.60 |
Maryo Yoseph Ambarto Dwi Sili Osan | 0.9600000 | 0.9200000 | 0.60 | 2.48 |
Cornelia Christina Temu | 0.9066667 | 0.8533333 | 0.60 | 2.36 |
Maria Diaz De Rozari | 0.8000000 | 0.9600000 | 0.60 | 2.36 |
Yohanes Lada Regaletha | 0.8800000 | 0.8400000 | 0.60 | 2.32 |
Maria Carlin Bepsi Costa | 0.8800000 | 0.8000000 | 0.60 | 2.28 |
Felia Tifani Cornelia Klau | 0.8800000 | 0.8000000 | 0.60 | 2.28 |
Imelda Sandrawati Ambot | 0.8400000 | 0.8000000 | 0.60 | 2.24 |
Maria Megachita Da Silva | 0.8400000 | 0.7600000 | 0.60 | 2.20 |
Alvino Alexandro Yappy | 0.5600000 | 1.0000000 | 0.60 | 2.16 |
Choirunnisa Jati Safitri | 0.7200000 | 0.7600000 | 0.60 | 2.08 |
Valentinus Nong Sina Gharu | 0.4533333 | 0.6666667 | 0.60 | 1.72 |
Kasianus Vinsensius Wero | 0.7200000 | 0.4000000 | 0.60 | 1.72 |
Sekolastika Maria Filipensa Naru | 0.6400000 | 0.6400000 | 0.36 | 1.64 |
Wihelmus Wedo | 0.4800000 | 0.4000000 | 0.60 | 1.48 |
Averinus Emanuel | 0.4000000 | 0.4000000 | 0.60 | 1.40 |
Klara Yosefa Edralin Paoe | 0.4000000 | 0.4000000 | 0.60 | 1.40 |
Yoseph Yakobus Dedo | 0.4000000 | 0.4000000 | 0.60 | 1.40 |
Fransiskus Saverius Soba | 0.4000000 | 0.3600000 | 0.60 | 1.36 |
Maria Helionora Yulinda Sair | 0.2800000 | 0.4000000 | 0.60 | 1.28 |
Semua pegawai telah dihitung nilai indeks EMON-nya dan diurutkan. Interpretasi nilai emon adalah sebagai berikut :
- Nilai 0 - 0.99 : secara rata-rata ada di antara kurang baik dan baik
- Nilai 1 - 2.99 : secara rata-rata ada diantara Baik dan sangat baik
- Nilai 3 : nilai sempurna a.k.a sangat baik
# tbl_emon %$% nama_presensi[indeks_emon == max(indeks_emon)]
<-
emon_winner |>
tbl_emon filter(indeks_emon == max(indeks_emon)) %$%
nama_presensi
Employee of the Month untuk bulan mei tahun 2025 adalah Juliana Marbun.
Pengesahan
Script dan Sintas yang dimuat dalam kertas kerja ini telah mengikuti arahan dan langkah-langkah dari KAK.