Program Studi/Kelas: Statistika/A
Dosen Pengampu: Bayutama Isnaini, S.Si., M.Si.

Anggota Kelompok F

No Nama NIM
1 Adinda Erlin Mafazi Rahma 21108062610002
2 Angelina Yonna Agni Prasetyo 21108062610011
3 Athifa Nuria Maghfiro 21108062610014
4 Faridatun Khasanah 21108062610034
5 Fathinatuz Zahra 21108062610035

1 Pendahuluan

1.1 Tujuan Pembelajaran

Setelah membaca modul ini, pembaca diharapkan mampu:

  1. Menyimpan data karyawan (teks dan angka) ke dalam variabel, serta memeriksa tipe datanya.
  2. Mengatur sistem penggajian perusahaan menggunakan fungsi percabangan ifelse(), baik satu tingkat maupun bertingkat.
  3. Menghitung gaji pokok, tunjangan, bonus kinerja, upah lembur, pajak, dan gaji bersih untuk satu karyawan.
  4. Menerapkan perhitungan yang sama pada banyak karyawan sekaligus dengan memanfaatkan vektor dan data frame.
  5. Membaca hasil perhitungan dan menyimpulkannya.

1.2 Deskripsi Kasus

Setiap bulan, divisi HR/SDM sebuah perusahaan harus menyiapkan slip gaji seluruh karyawan. Gaji bersih tiap karyawan berbeda-beda karena bergantung pada divisi, masa kerja, rating kinerja, dan jam lembur. Menghitungnya secara manual untuk banyak karyawan memakan waktu dan rentan salah, sehingga perhitungannya dibuat otomatis dengan program R berdasarkan aturan perusahaan.

Data yang dicatat untuk setiap karyawan:

  • nama,
  • divisi,
  • masa kerja (tahun),
  • rating kinerja (skala 1 sampai 5),
  • jam lembur.

Dari data tersebut, program menghitung gaji pokok, tunjangan, bonus kinerja, upah lembur, potongan pajak, dan gaji bersih.

Catatan: Data pada modul ini adalah data sintesis (buatan). Aturan pajak disederhanakan dan bukan perhitungan PPh 21 resmi.

1.2.1 Aturan Perhitungan

Kriteria Aturan Hasil
Gaji pokok (berdasarkan divisi) IT Rp9.000.000
Keuangan Rp7.000.000
Pemasaran Rp6.500.000
HRD Rp6.000.000
Tunjangan masa kerja kurang dari 2 tahun Rp0
2 sampai 5 tahun Rp500.000
lebih dari 5 tahun Rp1.000.000
Bonus kinerja (dari gaji pokok) rating 5 20%
rating 4 10%
rating 3 5%
rating kurang dari 3 0%
Upah lembur jam lembur lebih dari 10 jam jam lembur x 1,5 x tarif normal per jam
selain itu Rp0 (tidak layak lembur)
Potongan Pajak penghasilan kotor lebih dari Rp10.000.000 10% dari penghasilan kotor
selain itu 5% dari penghasilan kotor

1.2.2 Rumus Perhitungan

  • Tarif normal per jam = gaji pokok / 173
  • Penghasilan kotor = gaji pokok + tunjangan + bonus + upah lembur
  • Pajak = tarif pajak x penghasilan kotor
  • Gaji bersih = penghasilan kotor - pajak

2 Konsep Dasar

2.1 Variabel dan Operator Perbandingan

Variabel menyimpan data. Operator perbandingan (<, <=, >, >=, ==, !=) menghasilkan nilai TRUE atau FALSE.

rating <- 4

rating == 5
## [1] FALSE
rating >= 3
## [1] TRUE

2.2 Percabangan dengan ifelse()

Bentuk umum dari fungsi percabangan adalah ifelse(kondisi, nilai_jika_benar, nilai_jika_salah). Fungsi ini bekerja pada seluruh isi vektor sekaligus, sehingga efektif digunakan untuk data banyak baris.

jam_lembur <- c(5, 12, 20)

ifelse(jam_lembur > 10, "Layak lembur", "Tidak layak lembur")
## [1] "Tidak layak lembur" "Layak lembur"       "Layak lembur"

2.3 Percabangan Bertingkat

Jika ada lebih dari dua kemungkinan, ifelse() diletakkan di dalam ifelse(). Jika kondisi pertama salah, R memeriksa kondisi kedua, dan seterusnya.

rating <- c(5, 3, 1)

ifelse(rating == 5, 0.20,
  ifelse(rating == 3, 0.05, 0)
)
## [1] 0.20 0.05 0.00

3 Penyelesaian Kasus

3.1 Menghitung Gaji Satu Karyawan

Pertama, perhitungan dilakukan untuk satu karyawan.

Langkah 1: Input data

nama        <- "Budi Santoso"
divisi      <- "IT"
masa_kerja  <- 4        # tahun
rating      <- 4        # skala 1-5
jam_lembur  <- 12       # jam

class(nama)
## [1] "character"
class(masa_kerja)
## [1] "numeric"

Langkah 2: Gaji pokok berdasarkan divisi

Catatan: R sering menampilkan angka bulat yang besar dalam bentuk ilmiah. Contoh: 9e+06 artinya 9 x 10^6 = 9.000.000. Untuk menghilangkan bentuk ilmiah, digunakan fungsi options(scipen = 999)

options(scipen = 999)
gaji_pokok <- ifelse(divisi == "IT", 9000000,
              ifelse(divisi == "Keuangan", 7000000,
              ifelse(divisi == "Pemasaran", 6500000, 6000000)))
gaji_pokok
## [1] 9000000

Langkah 3: Tunjangan masa kerja

tunjangan <- ifelse(masa_kerja < 2, 0,
             ifelse(masa_kerja <= 5, 500000, 1000000))
tunjangan
## [1] 500000

Langkah 4: Bonus kinerja

persen_bonus <- ifelse(rating == 5, 0.20,
                ifelse(rating == 4, 0.10,
                ifelse(rating == 3, 0.05, 0)))

bonus <- persen_bonus * gaji_pokok
bonus
## [1] 900000

Langkah 5: Upah lembur

tarif_normal <- gaji_pokok / 173

status_lembur <- ifelse(jam_lembur > 10, "Layak lembur", "Tidak layak lembur")
upah_lembur   <- ifelse(jam_lembur > 10, jam_lembur * 1.5 * tarif_normal, 0)

status_lembur
## [1] "Layak lembur"
upah_lembur
## [1] 936416.2

Langkah 6: Penghasilan kotor, pajak, dan gaji bersih

penghasilan_kotor <- gaji_pokok + tunjangan + bonus + upah_lembur

tarif_pajak <- ifelse(penghasilan_kotor > 10000000, 0.10, 0.05)

pajak       <- tarif_pajak * penghasilan_kotor
gaji_bersih <- penghasilan_kotor - pajak

Langkah 7: Slip gaji

nama
## [1] "Budi Santoso"
divisi
## [1] "IT"
tarif_pajak
## [1] 0.1
slip <- data.frame(
  Komponen = c("Gaji pokok", "Tunjangan", "Bonus kinerja", "Upah lembur",
               "Penghasilan kotor", "Pajak", "Gaji bersih"),
  Jumlah   = c(gaji_pokok, tunjangan, bonus, upah_lembur,
               penghasilan_kotor, pajak, gaji_bersih)
)
slip
Komponen Jumlah
Gaji pokok 9000000.0
Tunjangan 500000.0
Bonus kinerja 900000.0
Upah lembur 936416.2
Penghasilan kotor 11336416.2
Pajak 1133641.6
Gaji bersih 10202774.6

3.2 Menghitung Gaji Banyak Karyawan

Untuk menghitung gaji banyak karyawan sekaligus, digunakan fungsi ifelse().

Langkah 1: Menyiapkan data

Data frame berikut berisi data sintesis 8 karyawan.

karyawan <- data.frame(
  nama       = c("Budi", "Sari", "Andi", "Dewi", "Rudi", "Maya", "Fajar", "Lina"),
  divisi     = c("IT", "Keuangan", "Pemasaran", "HRD", "IT", "Keuangan", "Pemasaran", "HRD"),
  masa_kerja = c(4, 1, 7, 3, 0.5, 6, 2, 8),
  rating     = c(4, 5, 3, 2, 3, 5, 4, 1),
  jam_lembur = c(12, 0, 15, 8, 20, 11, 5, 0)
)
karyawan
nama divisi masa_kerja rating jam_lembur
Budi IT 4.0 4 12
Sari Keuangan 1.0 5 0
Andi Pemasaran 7.0 3 15
Dewi HRD 3.0 2 8
Rudi IT 0.5 3 20
Maya Keuangan 6.0 5 11
Fajar Pemasaran 2.0 4 5
Lina HRD 8.0 1 0

Langkah 2: Menghitung gaji pokok dan tunjangan

karyawan$gaji_pokok <- ifelse(karyawan$divisi == "IT", 9000000,
                       ifelse(karyawan$divisi == "Keuangan", 7000000,
                       ifelse(karyawan$divisi == "Pemasaran", 6500000, 6000000)))

karyawan$tunjangan <- ifelse(karyawan$masa_kerja < 2, 0,
                      ifelse(karyawan$masa_kerja <= 5, 500000, 1000000))

tabel_pokok <- data.frame(
  nama       = karyawan$nama,
  divisi     = karyawan$divisi,
  masa_kerja = karyawan$masa_kerja,
  gaji_pokok = karyawan$gaji_pokok,
  tunjangan  = karyawan$tunjangan
)
tabel_pokok
nama divisi masa_kerja gaji_pokok tunjangan
Budi IT 4.0 9000000 500000
Sari Keuangan 1.0 7000000 0
Andi Pemasaran 7.0 6500000 1000000
Dewi HRD 3.0 6000000 500000
Rudi IT 0.5 9000000 0
Maya Keuangan 6.0 7000000 1000000
Fajar Pemasaran 2.0 6500000 500000
Lina HRD 8.0 6000000 1000000

Langkah 3: Menghitung bonus kinerja

karyawan$persen_bonus <- ifelse(karyawan$rating == 5, 0.20,
                         ifelse(karyawan$rating == 4, 0.10,
                         ifelse(karyawan$rating == 3, 0.05, 0)))

karyawan$bonus <- karyawan$persen_bonus * karyawan$gaji_pokok

tabel_bonus <- data.frame(
  nama         = karyawan$nama,
  rating       = karyawan$rating,
  persen_bonus = karyawan$persen_bonus,
  bonus        = karyawan$bonus
)
tabel_bonus
nama rating persen_bonus bonus
Budi 4 0.10 900000
Sari 5 0.20 1400000
Andi 3 0.05 325000
Dewi 2 0.00 0
Rudi 3 0.05 450000
Maya 5 0.20 1400000
Fajar 4 0.10 650000
Lina 1 0.00 0

Langkah 4: Menghitung upah lembur

karyawan$status_lembur <- ifelse(karyawan$jam_lembur > 10, "Layak lembur", "Tidak layak lembur")

karyawan$upah_lembur <- ifelse(karyawan$jam_lembur > 10,
                               karyawan$jam_lembur * 1.5 * karyawan$gaji_pokok / 173, 0)

tabel_lembur <- data.frame(
  nama          = karyawan$nama,
  jam_lembur    = karyawan$jam_lembur,
  status_lembur = karyawan$status_lembur,
  upah_lembur   = karyawan$upah_lembur
)
tabel_lembur
nama jam_lembur status_lembur upah_lembur
Budi 12 Layak lembur 936416.2
Sari 0 Tidak layak lembur 0.0
Andi 15 Layak lembur 845375.7
Dewi 8 Tidak layak lembur 0.0
Rudi 20 Layak lembur 1560693.6
Maya 11 Layak lembur 667630.1
Fajar 5 Tidak layak lembur 0.0
Lina 0 Tidak layak lembur 0.0

Langkah 5: Menghitung penghasilan kotor, pajak, dan gaji bersih

karyawan$penghasilan_kotor <- karyawan$gaji_pokok + karyawan$tunjangan +
                              karyawan$bonus + karyawan$upah_lembur

karyawan$tarif_pajak <- ifelse(karyawan$penghasilan_kotor > 10000000, 0.10, 0.05)
karyawan$pajak       <- karyawan$tarif_pajak * karyawan$penghasilan_kotor
karyawan$gaji_bersih <- karyawan$penghasilan_kotor - karyawan$pajak

tabel_pajak <- data.frame(
  nama              = karyawan$nama,
  penghasilan_kotor = karyawan$penghasilan_kotor,
  tarif_pajak       = karyawan$tarif_pajak,
  pajak             = karyawan$pajak,
  gaji_bersih       = karyawan$gaji_bersih
)
tabel_pajak
nama penghasilan_kotor tarif_pajak pajak gaji_bersih
Budi 11336416 0.10 1133641.6 10202775
Sari 8400000 0.05 420000.0 7980000
Andi 8670376 0.05 433518.8 8236857
Dewi 6500000 0.05 325000.0 6175000
Rudi 11010694 0.10 1101069.4 9909624
Maya 10067630 0.10 1006763.0 9060867
Fajar 7650000 0.05 382500.0 7267500
Lina 7000000 0.05 350000.0 6650000

Langkah 6: Tabel hasil akhir

Tabel hasil akhir terdiri atas gabungan seluruh komponen gaji setiap karyawan.

hasil <- data.frame(
  nama              = karyawan$nama,
  divisi            = karyawan$divisi,
  gaji_pokok        = karyawan$gaji_pokok,
  tunjangan         = karyawan$tunjangan,
  bonus             = karyawan$bonus,
  upah_lembur       = karyawan$upah_lembur,
  penghasilan_kotor = karyawan$penghasilan_kotor,
  pajak             = karyawan$pajak,
  gaji_bersih       = karyawan$gaji_bersih
)
hasil
nama divisi gaji_pokok tunjangan bonus upah_lembur penghasilan_kotor pajak gaji_bersih
Budi IT 9000000 500000 900000 936416.2 11336416 1133641.6 10202775
Sari Keuangan 7000000 0 1400000 0.0 8400000 420000.0 7980000
Andi Pemasaran 6500000 1000000 325000 845375.7 8670376 433518.8 8236857
Dewi HRD 6000000 500000 0 0.0 6500000 325000.0 6175000
Rudi IT 9000000 0 450000 1560693.6 11010694 1101069.4 9909624
Maya Keuangan 7000000 1000000 1400000 667630.1 10067630 1006763.0 9060867
Fajar Pemasaran 6500000 500000 650000 0.0 7650000 382500.0 7267500
Lina HRD 6000000 1000000 0 0.0 7000000 350000.0 6650000

4 Hasil dan Pembahasan

Ringkasan gaji bersih seluruh karyawan:

ringkasan <- data.frame(
  Keterangan = c("Jumlah karyawan", "Total gaji bersih", "Rata-rata gaji bersih",
                 "Gaji bersih tertinggi", "Gaji bersih terendah"),
  Nilai      = c(nrow(karyawan), sum(karyawan$gaji_bersih), mean(karyawan$gaji_bersih),
                 max(karyawan$gaji_bersih), min(karyawan$gaji_bersih))
)
ringkasan
Keterangan Nilai
Jumlah karyawan 8
Total gaji bersih 65482623
Rata-rata gaji bersih 8185328
Gaji bersih tertinggi 10202775
Gaji bersih terendah 6175000

Pembahasan berdasarkan data hasil analisis:

  • Budi memiliki gaji bersih paling tinggi, yaitu sekitar Rp10,2 juta, sedangkan Dewi memiliki gaji bersih paling rendah, yaitu sekitar Rp6,18 juta.
  • Pajak sebesar 10% dikenakan kepada karyawan yang memiliki penghasilan kotor lebih dari Rp10.000.000. Berdasarkan data, karyawan yang dikenai pajak tersebut adalah Budi, Andi, dan Maya. Karyawan lainnya dikenai pajak sebesar 5%.
  • Karyawan yang mendapat upah lembur adalah Budi, Andi, Rudi, dan Maya karena jam lemburnya lebih dari 10 jam. Sementara itu, karyawan yang jam lemburnya kurang dari 10 jam tidak mendapatkan upah lembur.
  • Gaji pokok berpengaruh besar karena ikut menentukan bonus dan tarif lembur. Divisi IT memiliki gaji pokok terbesar, sehingga bonus dan upah lemburnya pun lebih besar.
  • Karyawan dengan rating di bawah 3 tidak mendapat bonus kinerja. Oleh karena itu, Dewi yang memiliki rating 2 dan Lina yang memiliki rating 1 tidak menerima bonus.

5 Kesimpulan

Dengan variabel, operator perbandingan, dan percabangan ifelse() dalam program R, perhitungan gaji (gaji pokok, tunjangan, bonus, upah lembur, pajak, dan gaji bersih) dapat diolah secara otomatis berdasarkan data karyawan dan aturan perusahaan. Sistem yang sama dapat digunakan untuk kasus lain yang membutuhkan klasifikasi tertentu, seperti penentuan diskon belanja atau penggolongan nilai.