Belajar R – Mencari data last transaction pada tabel transaksi

By | July 30, 2024
1,735 Views

Mencari last transaksi dari sebuah record sangat mudahlah kalau kalian menggunakan bahasa SQL.  Namun demikian ternyata data tersebut disimpan dalam format excel dan mempunyai format tanggal indonesia yaitu y/m/d tentu hal ini bila diolah menggunakan excel akan jadi banyak kerjaan alias banyak kode-kode yang dibuat. Misalkan ada sebuah transaksi dari agen seperti berikut

Pada kenyatannya ada banyak sekali record, contoh diatas dibuat mudah saja biar nggak puyeng. Data –data diatas akan digunakan oleh tim marketing untuk melakukan follow up dan afirmasi agar agen-agen yang mempunyai sudah lama melakukan transaksi dapat dilakukan aktifasi lagi. Misalkan ada 3 agen yang digolongkan berdasarkan terakhir mereka lakukan transaksi

  1. Golongan A yaitu agen yang melakukan transaksi sekitar 14 hari yang lalu atau sekitar 2 minggu
  2. Golongan B yaitu agen dengan transaksi 15 sampai 31 hari yang lalu atau sekitar 1 bulan
  3. Golongan C yaitu agen dengan transaksi diatas 31 hari atau lebih dari 1 bulan

Tentu untuk mencari data agen yang berisi ratusan atau ribuan record di excel cukup menggunakan lookup. Tapi ada yang lebih cepat lagi yaitu menggunakan bahasa R yang dibutuhkan hanya 3 baris saja. Berikut hasil pengolahan menggunakan R, ternyata agen alfonso yang paling lama.

  agen    last_transaction hari   
  <chr>   <date>           <drtn> 
1 adi     2020-06-25       16 days
2 alfonso 2020-06-20       21 days
3 bendi   2020-06-25       16 days

Didalam R kita akan terbantu sekali dengan operasi agregasi (kalian bisa baca-baca lagi cara mengolah data kependudukan sehingga dapat divisualkan dalam bentuk piramid di https://softscients.com/2020/07/04/menjadi-cerdas-melalui-grafik-piramida-dan-teknik-query-data/ )

Konsep yang digunakan sama yaitu dilakukan dengan tahapan sebagai berikut

  1. Mengubah format tanggal indonesia menjadi format tanggal di R. Pada tabel diatas disajikan informasi hari/bulan/tahun akan diubah menjadi tahun-bulan-tanggal.
  2. Melakukan agregasi by group dengan syarat kondisi tanggal paling terakhir (maksimalnya)
  3. Menghitung jumlah hari saat ini dengan hari last transcation

Oiya, kalian juga butuh package penting untuk

  1. membaca dan menyimpan data excel yaitu openxlsx
  2. package epptools untuk mendapatkan jumlah hari, misalkan berapa jumlah hari antara tanggal 25 juni 2020 dengan 11 juli 2020 yaitu 16 hari (termasuk hari sabtu minggu ya tetap dihitung), cukup dengan function age_calc()yang merupakan kepanjangan dari age calculate.
  3. Serta yang paling penting yaitu package dplyr

Yuk mari kita buat script

library(dplyr) #mengolah data frame
library(eeptools) #mengolah format tanggal
#install.packages('openxlsx')
library(openxlsx)

tran = read.xlsx('penjualan.xlsx')
head(tran,5)

#bikin kolom baru untuk mengubah format tanggal indonesia menjadi internasional
tran = tran %>% mutate(tanggal_format=as.Date(tanggal,'%d/%m/%Y'))
hasil = tran %>% group_by(agen) %>% summarize(last_transaction = max(tanggal_format))
hasil
#hitung jumlah hari dengan funcion age_clc
hasil = hasil %>% mutate(hari=ceiling(age_calc(last_transaction, units = 'days')))
hasil

write.xlsx(hasil, 'summary.xlsx', sheetName = "Sheet1", 
           col.names = TRUE, row.names = TRUE, append = FALSE)

Eits, sebenarnya ada yang sedikit kelupaan lho, apa itu? Yups sebaiknya hasil diatas dilakukan sorting secara ascending by hari agar tidak repot-repot melakukan sortasi lagi di excel karena sudah diurutkan mulai dari besar sampai terkecil. Kalian bisa tambahkan kode berikut sebelum disimpan

hasil = hasil %>% arrange(last_transaction)

Sehingga hasilnya menjadi teratur

  agen    last_transaction hari   
  <chr>   <date>           <drtn> 
1 alfonso 2020-06-20       21 days
2 adi     2020-06-25       16 days
3 bendi   2020-06-25       16 days

Bagaimana menurut kalian? Mencari data last transaction pada records menggunakan R