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
- Golongan A yaitu agen yang melakukan transaksi sekitar 14 hari yang lalu atau sekitar 2 minggu
- Golongan B yaitu agen dengan transaksi 15 sampai 31 hari yang lalu atau sekitar 1 bulan
- 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
- Mengubah format tanggal indonesia menjadi format tanggal di R. Pada tabel diatas disajikan informasi hari/bulan/tahun akan diubah menjadi tahun-bulan-tanggal.
- Melakukan agregasi by group dengan syarat kondisi tanggal paling terakhir (maksimalnya)
- Menghitung jumlah hari saat ini dengan hari last transcation
Oiya, kalian juga butuh package penting untuk
- membaca dan menyimpan data excel yaitu openxlsx
- 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.
- 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