Data merupakan salah satu sumber informasi yang dapat digunakan untuk memahami suatu peristiwa. Data yang diperoleh dari kondisi nyata tidak selalu berada dalam kondidi yang siap untuk dianalisis karena dapat mengandung nilai kosong, tidak valid, maupun tidak konsisten.
Oleh karena itu, diperlukan proses indentifikasi, pemeriksaan, dan persiapan data sebelum dilakukan analisis lebih lanjut. Dalam analisis ini digunakan data populasi dan data sampel transaksi penjualan cafe. Kedua data tersebut akan diperiksa dan dibersihkan sebelum digunakan pada tahap analisis selanjutnya.
Tujuan Analisis dengan variabel yang dipilih:
Data yang digunakan merupakan data sekunder, dimana data yang sebelumnya telah dikumpulkan oleh pihak lain dan kemudian digunakan untuk dianalisis. Data ini diterbitkan oleh Ahmed Mohammed yaitu data berupa transaksi penjualan cafe tahun 2023, data diambil dari kaggle.
Variabel lainnya digunakan sebagai informasi pendukung dalam proses identifikasi dan cleaning data.
Analisis dimulai dari data yang awalnya berjumlah 10.000, lalu dipilih data sampel sebanyak 1000 data atau 10% dari data awal untuk dianalisis, lalu data disimpan dalam format CSV.
data_populasi <- read.csv("D:\\DOWNLOAD\\ADE\\DATA ASLI.csv", header = TRUE, sep = ",")
knitr::kable(
head(data_populasi, 100),
caption = "100 Observasi Awal Data Populasi"
)
| Transaction.ID | Item | Quantity | Price.Per.Unit | Total.Spent | Payment.Method | Location | Transaction.Date |
|---|---|---|---|---|---|---|---|
| TXN_1961373 | Coffee | 2 | 2 | 4 | Credit Card | Takeaway | 9/8/2023 |
| TXN_4977031 | Cake | 4 | 3 | 12 | Cash | In-store | 5/16/2023 |
| TXN_4271903 | Cookie | 4 | 1 | ERROR | Credit Card | In-store | 7/19/2023 |
| TXN_7034554 | Salad | 2 | 5 | 10 | UNKNOWN | UNKNOWN | 4/27/2023 |
| TXN_3160411 | Coffee | 2 | 2 | 4 | Digital Wallet | In-store | 6/11/2023 |
| TXN_2602893 | Smoothie | 5 | 4 | 20 | Credit Card | 3/31/2023 | |
| TXN_4433211 | UNKNOWN | 3 | 3 | 9 | ERROR | Takeaway | 10/6/2023 |
| TXN_6699534 | Sandwich | 4 | 4 | 16 | Cash | UNKNOWN | 10/28/2023 |
| TXN_4717867 | 5 | 3 | 15 | Takeaway | 7/28/2023 | ||
| TXN_2064365 | Sandwich | 5 | 4 | 20 | In-store | 12/31/2023 | |
| TXN_2548360 | Salad | 5 | 5 | 25 | Cash | Takeaway | 11/7/2023 |
| TXN_3051279 | Sandwich | 2 | 4 | 8 | Credit Card | Takeaway | ERROR |
| TXN_7619095 | Sandwich | 2 | 4 | 8 | Cash | In-store | 5/3/2023 |
| TXN_9437049 | Cookie | 5 | 1 | 5 | Takeaway | 6/1/2023 | |
| TXN_8915701 | ERROR | 2 | 1.5 | 3 | In-store | 3/21/2023 | |
| TXN_2847255 | Salad | 3 | 5 | 15 | Credit Card | In-store | 11/15/2023 |
| TXN_3765707 | Sandwich | 1 | 4 | 4 | 6/10/2023 | ||
| TXN_6769710 | Juice | 2 | 3 | 6 | Cash | In-store | 2/24/2023 |
| TXN_8876618 | Cake | 5 | 3 | 15 | Cash | ERROR | 3/25/2023 |
| TXN_3709394 | Juice | 4 | 3 | 12 | Cash | Takeaway | 1/15/2023 |
| TXN_3522028 | Smoothie | ERROR | 4 | 20 | Cash | In-store | 4/4/2023 |
| TXN_3567645 | Smoothie | 4 | 4 | 16 | Credit Card | Takeaway | 3/30/2023 |
| TXN_5132361 | Sandwich | 3 | 4 | 12 | Digital Wallet | Takeaway | 12/1/2023 |
| TXN_2616390 | Sandwich | 2 | 4 | 8 | 9/18/2023 | ||
| TXN_9400181 | Sandwich | 5 | 4 | 20 | Cash | In-store | 6/3/2023 |
| TXN_7958992 | Smoothie | 3 | 4 | UNKNOWN | UNKNOWN | 12/13/2023 | |
| TXN_5183041 | Cookie | 5 | 1 | 5 | Credit Card | In-store | 4/20/2023 |
| TXN_5695074 | Juice | 4 | 3 | 12 | Credit Card | Takeaway | 4/10/2023 |
| TXN_8467949 | Smoothie | 5 | 4 | 20 | Credit Card | 3/11/2023 | |
| TXN_7640952 | Cake | 4 | 3 | 12 | Digital Wallet | Takeaway | ERROR |
| TXN_1736287 | 5 | 2 | 10 | Digital Wallet | 6/2/2023 | ||
| TXN_8927252 | UNKNOWN | 2 | 1 | ERROR | Credit Card | ERROR | 11/6/2023 |
| TXN_9677376 | Smoothie | 4 | 4 | 16 | In-store | 8/15/2023 | |
| TXN_7710508 | UNKNOWN | 5 | 1 | 5 | Cash | ERROR | |
| TXN_8853997 | Smoothie | 2 | 4 | 8 | Digital Wallet | Takeaway | 10/9/2023 |
| TXN_9130559 | Sandwich | 1 | 4 | 4 | Credit Card | UNKNOWN | 5/28/2023 |
| TXN_6855453 | UNKNOWN | 4 | 3 | 12 | In-store | 7/17/2023 | |
| TXN_1080432 | Salad | 2 | 5 | 10 | Credit Card | In-store | 4/29/2023 |
| TXN_2655815 | Smoothie | 4 | 4 | 16 | Takeaway | 6/8/2023 | |
| TXN_6688524 | Coffee | 4 | 2 | 8 | ERROR | 6/29/2023 | |
| TXN_2083138 | Smoothie | 3 | 4 | 12 | In-store | 4/17/2023 | |
| TXN_2427584 | Sandwich | 4 | 4 | 16 | Takeaway | 12/22/2023 | |
| TXN_6650263 | Tea | 2 | 1.5 | UNKNOWN | Takeaway | 1/10/2023 | |
| TXN_9620080 | Juice | 4 | 3 | 12 | Takeaway | 10/2/2023 | |
| TXN_1491578 | Cookie | 2 | 1 | 2 | 2/23/2023 | ||
| TXN_5455792 | Salad | 3 | 5 | 15 | Cash | 3/22/2023 | |
| TXN_8078640 | Juice | 4 | 3 | 12 | Digital Wallet | In-store | 11/3/2023 |
| TXN_9499313 | Juice | 5 | 3 | 15 | 3/2/2023 | ||
| TXN_8201146 | Juice | 5 | 3 | 15 | Cash | 6/26/2023 | |
| TXN_8230936 | Cake | 3 | 3 | 9 | ERROR | 5/2/2023 | |
| TXN_7742742 | Cake | 5 | 3 | 15 | Takeaway | 9/5/2023 | |
| TXN_6342161 | Salad | 5 | 5 | 25 | ERROR | Takeaway | 1/8/2023 |
| TXN_8914892 | UNKNOWN | 5 | 5 | 25 | Digital Wallet | 3/15/2023 | |
| TXN_3363746 | Smoothie | 3 | 4 | 12 | Credit Card | 11/25/2023 | |
| TXN_8614868 | Smoothie | 5 | 4 | 20 | Digital Wallet | Takeaway | 12/5/2023 |
| TXN_5522862 | Cookie | ERROR | 1 | 2 | Credit Card | Takeaway | 3/19/2023 |
| TXN_3578141 | Cake | 5 | 15 | Takeaway | 6/27/2023 | ||
| TXN_2080895 | Cake | UNKNOWN | 3 | 3 | Digital Wallet | In-store | 4/19/2023 |
| TXN_6421134 | Sandwich | 4 | 4 | 16 | Cash | Takeaway | 11/3/2023 |
| TXN_8813311 | Juice | 5 | 3 | 15 | In-store | 10/7/2023 | |
| TXN_9023317 | Salad | 1 | 5 | 5 | 9/30/2023 | ||
| TXN_8051289 | 1 | 3 | 3 | In-store | 10/9/2023 | ||
| TXN_2537617 | Sandwich | 1 | 4 | 4 | Cash | 5/27/2023 | |
| TXN_9099694 | UNKNOWN | 3 | 5 | 15 | Takeaway | 11/18/2023 | |
| TXN_9230615 | Smoothie | 4 | 4 | 16 | Digital Wallet | 6/1/2023 | |
| TXN_4987129 | Sandwich | 3 | In-store | 10/20/2023 | |||
| TXN_8501819 | Juice | 3 | 6 | Cash | 3/30/2023 | ||
| TXN_3068204 | Cookie | 1 | 1 | 1 | Credit Card | Takeaway | 10/3/2023 |
| TXN_8427104 | Salad | 2 | ERROR | 10 | In-store | 10/27/2023 | |
| TXN_8471743 | ERROR | 5 | 3 | 15 | Digital Wallet | In-store | 4/6/2023 |
| TXN_2621580 | Tea | 2 | 1.5 | 3 | Cash | In-store | 3/22/2023 |
| TXN_4726376 | Cake | 2 | 3 | 6 | Credit Card | In-store | 1/31/2023 |
| TXN_6044979 | 1 | 1 | 1 | Cash | In-store | 12/8/2023 | |
| TXN_4238417 | Salad | 2 | 5 | 10 | ERROR | 6/19/2023 | |
| TXN_1900620 | Smoothie | 2 | 4 | 8 | Credit Card | ERROR | 12/14/2023 |
| TXN_6420335 | Coffee | 1 | 2 | 2 | Cash | Takeaway | 7/16/2023 |
| TXN_3858209 | Sandwich | 4 | 4 | 16 | Cash | 2/22/2023 | |
| TXN_2091733 | Salad | 1 | 5 | 5 | In-store | ||
| TXN_8735480 | Tea | 5 | 1.5 | 7.5 | Cash | 6/2/2023 | |
| TXN_3829165 | Juice | 4 | 3 | 12 | Cash | In-store | 6/15/2023 |
| TXN_3748616 | Coffee | 2 | 2 | 4 | Credit Card | In-store | 12/9/2023 |
| TXN_1993289 | Sandwich | 2 | 4 | 8 | In-store | 4/18/2023 | |
| TXN_2123367 | Cookie | 2 | 1 | 2 | 11/7/2023 | ||
| TXN_5266394 | Cake | 3 | 3 | 9 | Cash | In-store | 10/28/2023 |
| TXN_5107946 | Cake | 4 | 3 | 12 | Credit Card | 12/22/2023 | |
| TXN_8035512 | Tea | 3 | 4.5 | Cash | UNKNOWN | 10/29/2023 | |
| TXN_8718498 | Cake | 5 | 3 | 15 | Credit Card | ERROR | 4/30/2023 |
| TXN_3955361 | Cookie | 5 | 1 | 5 | Takeaway | 4/2/2023 | |
| TXN_9487821 | ERROR | 1 | 5 | 5 | Digital Wallet | Takeaway | 5/24/2023 |
| TXN_4132730 | 5 | 1 | 5 | In-store | 3/12/2023 | ||
| TXN_8976658 | Tea | 2 | 1.5 | 3 | Credit Card | In-store | 8/16/2023 |
| TXN_5455936 | UNKNOWN | 5 | 3 | 15 | In-store | 10/28/2023 | |
| TXN_2725602 | Juice | 5 | 3 | 15 | Credit Card | 9/10/2023 | |
| TXN_3011323 | Coffee | 3 | 2 | 6 | Credit Card | 3/7/2023 | |
| TXN_6289610 | Juice | 3 | 3 | UNKNOWN | Cash | Takeaway | 8/7/2023 |
| TXN_8268061 | Salad | 3 | 5 | 15 | ERROR | Takeaway | 8/20/2023 |
| TXN_5220895 | Salad | 5 | 5 | 25 | Cash | In-store | 6/10/2023 |
| TXN_3085509 | Coffee | 4 | 2 | 8 | Digital Wallet | In-store | 4/15/2023 |
| TXN_9999113 | Juice | 4 | 3 | 12 | Cash | Takeaway | 5/27/2023 |
| TXN_8779771 | Coffee | 4 | 2 | 8 | Cash | In-store | 7/25/2023 |
Data asli yang diambil dari kaggle ini terdapat 10.000 data lalu diambil 10% nya, menurut Haq & Barlan (2020) dalam Jurnal Sains Komunikasi dan Pengembangan Masyarakat (IPB) yang menggunakan batas toleransi kesalahan 10% dalam menentukan ukuran sampel.
data_sampel <- read.csv("D:\\DOWNLOAD\\ADE\\data_sampel.csv", header = TRUE, sep = ",")
knitr::kable(
head(data_sampel, 100),
caption = "100 Observasi Awal Data Sampel"
)
| Transaction.ID | Item | Quantity | Price.Per.Unit | Total.Spent | Payment.Method | Location | Transaction.Date |
|---|---|---|---|---|---|---|---|
| TXN_2176024 | Coffee | 5 | ERROR | 10.0 | Digital Wallet | In-store | 2/3/2023 |
| TXN_6327139 | ERROR | 4 | 4.0 | 16.0 | Takeaway | ERROR | |
| TXN_5488764 | Coffee | 4 | 2.0 | 8.0 | Digital Wallet | Takeaway | 6/30/2023 |
| TXN_9530003 | Salad | 1 | 5.0 | 5.0 | Digital Wallet | 8/24/2023 | |
| TXN_3753993 | Sandwich | 5 | 4.0 | 20.0 | Credit Card | 4/1/2023 | |
| TXN_2251128 | Smoothie | 3 | 4.0 | 12.0 | Credit Card | In-store | 6/7/2023 |
| TXN_3715065 | Salad | 3 | 5.0 | 15.0 | Credit Card | ERROR | 3/17/2023 |
| TXN_7608637 | ERROR | 1 | 5.0 | 5.0 | Digital Wallet | 4/8/2023 | |
| TXN_1643122 | Juice | 3 | 3.0 | 9.0 | In-store | 5/15/2023 | |
| TXN_4176272 | Coffee | 1 | 2.0 | 2.0 | Digital Wallet | 6/6/2023 | |
| TXN_5741619 | Smoothie | ERROR | 4.0 | 20.0 | Cash | 1/2/2023 | |
| TXN_1584851 | Smoothie | 1 | 4.0 | 4.0 | Credit Card | 4/10/2023 | |
| TXN_5801294 | Salad | 1 | 5.0 | 5.0 | ERROR | 10/20/2023 | |
| TXN_6696619 | Cake | 3 | 3.0 | 9.0 | Takeaway | 3/19/2023 | |
| TXN_2153838 | Tea | 4 | 1.5 | ERROR | Digital Wallet | In-store | 12/19/2023 |
| TXN_7578769 | Sandwich | 5 | 4.0 | 20.0 | Digital Wallet | Takeaway | 1/30/2023 |
| TXN_5226635 | Cookie | 4 | 1.0 | 4.0 | Credit Card | Takeaway | 2/1/2023 |
| TXN_1237674 | 3 | 1.5 | 4.5 | Credit Card | UNKNOWN | 10/4/2023 | |
| TXN_2887971 | Smoothie | 2 | 4.0 | 8.0 | Digital Wallet | UNKNOWN | 6/26/2023 |
| TXN_5511805 | Juice | 1 | 3.0 | UNKNOWN | Takeaway | 6/3/2023 | |
| TXN_9769782 | Smoothie | 5 | 4.0 | 20.0 | Cash | Takeaway | ERROR |
| TXN_6068564 | Cake | 4 | 3.0 | Credit Card | Takeaway | 9/28/2023 | |
| TXN_7818024 | Cake | 3 | 3.0 | 9.0 | 8/16/2023 | ||
| TXN_8626720 | Juice | 4 | 3.0 | 12.0 | Cash | Takeaway | 6/2/2023 |
| TXN_8684125 | Salad | 2 | 5.0 | 10.0 | Credit Card | In-store | 3/8/2023 |
| TXN_6915899 | Salad | 3 | 5.0 | 15.0 | Credit Card | In-store | 5/29/2023 |
| TXN_4822256 | Smoothie | 1 | 4.0 | 4.0 | Credit Card | 11/11/2023 | |
| TXN_8570149 | Tea | 1 | 1.5 | 1.5 | Credit Card | 6/3/2023 | |
| TXN_3455702 | Salad | 1 | 5.0 | 5.0 | Cash | Takeaway | 3/23/2023 |
| TXN_9625287 | Juice | 2 | 3.0 | 6.0 | Cash | In-store | 7/8/2023 |
| TXN_5417192 | Cookie | 4 | 1.0 | 4.0 | Cash | In-store | 6/23/2023 |
| TXN_2146829 | Salad | 4 | 5.0 | 20.0 | Cash | 12/26/2023 | |
| TXN_3171150 | ERROR | 1 | 3.0 | 3.0 | Digital Wallet | 2/6/2023 | |
| TXN_9486849 | Cake | ERROR | 3.0 | 3.0 | Cash | Takeaway | 3/17/2023 |
| TXN_4758849 | Cake | 2 | 3.0 | 6.0 | 6/23/2023 | ||
| TXN_4893692 | Salad | 2 | 5.0 | 10.0 | 1/2/2023 | ||
| TXN_5048650 | Smoothie | 2 | 4.0 | UNKNOWN | Cash | Takeaway | 11/18/2023 |
| TXN_1686323 | Smoothie | 4 | 4.0 | 16.0 | Digital Wallet | In-store | 11/30/2023 |
| TXN_1819615 | Coffee | 4 | 2.0 | 8.0 | 6/3/2023 | ||
| TXN_7952153 | Smoothie | 2 | 4.0 | 8.0 | Digital Wallet | 7/24/2023 | |
| TXN_5014959 | Cookie | 2 | 1.0 | 2.0 | Credit Card | In-store | 11/28/2023 |
| TXN_6775972 | Coffee | 3 | 2.0 | 6.0 | Credit Card | 9/15/2023 | |
| TXN_3734446 | 5 | 2.0 | 10.0 | Digital Wallet | 4/16/2023 | ||
| TXN_5398922 | Salad | 1 | 5.0 | 5.0 | Cash | In-store | 1/10/2023 |
| TXN_1555314 | Sandwich | 1 | 4.0 | 4.0 | Takeaway | 2/25/2023 | |
| TXN_3053494 | 5 | 3.0 | 15.0 | Digital Wallet | In-store | 6/11/2023 | |
| TXN_5823330 | Salad | 3 | 5.0 | 15.0 | Digital Wallet | In-store | 10/19/2023 |
| TXN_6608817 | Sandwich | 5 | 4.0 | 20.0 | Credit Card | Takeaway | 7/17/2023 |
| TXN_8016623 | Tea | 2 | 1.5 | 3.0 | Cash | Takeaway | 5/9/2023 |
| TXN_5575420 | Smoothie | 3 | 4.0 | 12.0 | ERROR | In-store | 6/26/2023 |
| TXN_2710603 | Smoothie | 5 | 4.0 | 20.0 | Takeaway | 2/2/2023 | |
| TXN_3412484 | Cake | 4 | 3.0 | 12.0 | Takeaway | 9/6/2023 | |
| TXN_5132482 | Juice | 2 | 3.0 | 6.0 | Digital Wallet | In-store | 12/21/2023 |
| TXN_3399636 | Juice | 3 | 3.0 | 9.0 | Digital Wallet | Takeaway | 8/7/2023 |
| TXN_3601338 | Cake | 3 | 3.0 | 9.0 | Credit Card | ERROR | 3/6/2023 |
| TXN_3726397 | Salad | 5 | 5.0 | 25.0 | Takeaway | 1/30/2023 | |
| TXN_2831842 | Cake | 2 | 3.0 | 6.0 | ERROR | 5/20/2023 | |
| TXN_8499618 | Cake | 2 | 3.0 | 6.0 | ERROR | 5/23/2023 | |
| TXN_7950226 | Tea | 1 | 1.5 | 1.5 | Digital Wallet | In-store | 10/13/2023 |
| TXN_2719734 | Cake | 5 | 3.0 | 15.0 | Digital Wallet | In-store | 5/22/2023 |
| TXN_5573731 | Sandwich | 4 | 4.0 | 16.0 | Cash | 1/15/2023 | |
| TXN_2449402 | Smoothie | 5 | 4.0 | 20.0 | Cash | 1/29/2023 | |
| TXN_4653861 | Sandwich | UNKNOWN | 4.0 | 16.0 | Cash | Takeaway | ERROR |
| TXN_3937509 | Smoothie | 2 | 4.0 | 8.0 | In-store | 3/20/2023 | |
| TXN_2886223 | Sandwich | 5 | 4.0 | 20.0 | Credit Card | 7/24/2023 | |
| TXN_8631468 | Cake | 1 | 3.0 | 3.0 | Credit Card | In-store | 10/10/2023 |
| TXN_5966765 | Cake | 5 | 3.0 | 15.0 | Credit Card | Takeaway | 11/9/2023 |
| TXN_8379919 | Cookie | 3 | 1.0 | 3.0 | Digital Wallet | 12/4/2023 | |
| TXN_2188356 | Tea | 1 | 1.5 | 1.5 | In-store | 7/14/2023 | |
| TXN_4664329 | Tea | 2 | 1.5 | 3.0 | Credit Card | Takeaway | 1/6/2023 |
| TXN_9102030 | Smoothie | 4 | 4.0 | 16.0 | Digital Wallet | In-store | ERROR |
| TXN_6684056 | Smoothie | 2 | 4.0 | ERROR | 9/14/2023 | ||
| TXN_8005489 | Cake | 3 | 3.0 | 9.0 | In-store | 8/12/2023 | |
| TXN_9138791 | Cake | 1 | 3.0 | Digital Wallet | In-store | 3/22/2023 | |
| TXN_3152531 | Coffee | 3 | 2.0 | 6.0 | Credit Card | UNKNOWN | 11/24/2023 |
| TXN_1783857 | Coffee | 2 | UNKNOWN | 4.0 | Digital Wallet | In-store | 11/29/2023 |
| TXN_5578796 | Tea | 4 | 1.5 | 6.0 | In-store | 4/27/2023 | |
| TXN_1317114 | Cookie | 2 | 1.0 | 2.0 | Digital Wallet | Takeaway | 11/6/2023 |
| TXN_2693431 | Salad | 2 | 5.0 | 10.0 | Digital Wallet | 5/20/2023 | |
| TXN_2156218 | Smoothie | 2 | 4.0 | 8.0 | Digital Wallet | In-store | 7/24/2023 |
| TXN_8538315 | Coffee | UNKNOWN | 2.0 | 2.0 | Digital Wallet | 7/27/2023 | |
| TXN_2335312 | UNKNOWN | 2 | 3.0 | 6.0 | Digital Wallet | 6/23/2023 | |
| TXN_3706457 | Tea | 5 | 1.5 | 7.5 | Credit Card | Takeaway | 7/18/2023 |
| TXN_3125997 | Juice | 4 | 3.0 | 12.0 | 10/19/2023 | ||
| TXN_8740257 | Cake | 5 | 3.0 | 15.0 | Digital Wallet | 6/9/2023 | |
| TXN_5845583 | Tea | 4 | 1.5 | 6.0 | Cash | In-store | 10/19/2023 |
| TXN_8675558 | Tea | 5 | 1.5 | 7.5 | In-store | 5/23/2023 | |
| TXN_1034956 | Sandwich | 4 | 4.0 | 16.0 | Cash | In-store | ERROR |
| TXN_6363897 | Salad | 5 | 5.0 | 25.0 | Credit Card | Takeaway | 11/26/2023 |
| TXN_7176851 | Tea | 4 | 1.5 | 6.0 | Credit Card | Takeaway | 11/20/2023 |
| TXN_7853635 | Salad | 3 | 5.0 | 15.0 | Digital Wallet | Takeaway | 2/16/2023 |
| TXN_3342106 | Sandwich | 1 | 4.0 | 4.0 | Credit Card | In-store | 1/14/2023 |
| TXN_5499117 | Salad | 4 | 5.0 | 20.0 | Digital Wallet | UNKNOWN | 7/16/2023 |
| TXN_2815691 | Juice | 5 | 3.0 | 15.0 | Digital Wallet | ERROR | 2/6/2023 |
| TXN_4634772 | Juice | 3 | 3.0 | 9.0 | Credit Card | In-store | 1/12/2023 |
| TXN_3163567 | Salad | 2 | 5.0 | Digital Wallet | Takeaway | 6/1/2023 | |
| TXN_7611120 | Juice | 2 | 3.0 | 6.0 | Cash | Takeaway | 3/30/2023 |
| TXN_8379868 | Cake | 3 | 3.0 | 9.0 | Cash | In-store | 1/16/2023 |
| TXN_5183041 | Cookie | 5 | 1.0 | 5.0 | Credit Card | In-store | 4/20/2023 |
| TXN_2473090 | UNKNOWN | 2 | 3.0 | Credit Card | In-store | 3/3/2023 |
# Struktur Data
struktur_sample <- data.frame(Variabel = names(data_sampel), Tipe_Data = sapply(data_sampel, class))
knitr::kable(
struktur_sample,
caption = "Struktur Variabel Data Sampel"
)
| Variabel | Tipe_Data | |
|---|---|---|
| Transaction.ID | Transaction.ID | character |
| Item | Item | character |
| Quantity | Quantity | character |
| Price.Per.Unit | Price.Per.Unit | character |
| Total.Spent | Total.Spent | character |
| Payment.Method | Payment.Method | character |
| Location | Location | character |
| Transaction.Date | Transaction.Date | character |
# Melihat jumlah UNKNOWN, ERROR, dan nilai kosong
hasil_invalid_sampel <- data.frame(
Variabel = names(data_sampel),
UNKNOWN = sapply(data_sampel, function(x) {
sum(toupper(trimws(as.character(x))) == "UNKNOWN", na.rm = TRUE)
}),
ERROR = sapply(data_sampel, function(x) {
sum(toupper(trimws(as.character(x))) == "ERROR", na.rm = TRUE)
}),
Kosong = sapply(data_sampel, function(x) {
sum(trimws(as.character(x)) == "", na.rm = TRUE)
})
)
knitr::kable(
hasil_invalid_sampel,
caption = "Pemeriksaan Nilai Tidak Valid pada Data Sampel"
)
| Variabel | UNKNOWN | ERROR | Kosong | |
|---|---|---|---|---|
| Transaction.ID | Transaction.ID | 0 | 0 | 0 |
| Item | Item | 26 | 29 | 28 |
| Quantity | Quantity | 15 | 14 | 15 |
| Price.Per.Unit | Price.Per.Unit | 16 | 14 | 20 |
| Total.Spent | Total.Spent | 19 | 12 | 20 |
| Payment.Method | Payment.Method | 22 | 29 | 255 |
| Location | Location | 35 | 37 | 322 |
| Transaction.Date | Transaction.Date | 14 | 11 | 11 |
knitr::kable(
hasil_invalid_sampel,
caption = "Pemeriksaan Nilai Tidak Valid pada Data Sampel"
)
| Variabel | UNKNOWN | ERROR | Kosong | |
|---|---|---|---|---|
| Transaction.ID | Transaction.ID | 0 | 0 | 0 |
| Item | Item | 26 | 29 | 28 |
| Quantity | Quantity | 15 | 14 | 15 |
| Price.Per.Unit | Price.Per.Unit | 16 | 14 | 20 |
| Total.Spent | Total.Spent | 19 | 12 | 20 |
| Payment.Method | Payment.Method | 22 | 29 | 255 |
| Location | Location | 35 | 37 | 322 |
| Transaction.Date | Transaction.Date | 14 | 11 | 11 |
Strategi cleaning data dilakukan secara manual tanpa menggunakan R Studio diantaranya:
data_cleaning <- read.csv("D:\\DOWNLOAD\\ADE\\Cleaning Data 1.csv", header = TRUE, sep = ",")
knitr::kable(
head(data_cleaning, 100),
caption = "100 Observasi Awal Data Cleaning"
)
| Transaction.ID | Item | Quantity | Price.Per.Unit | Total.Spent | Payment.Method | Location |
|---|---|---|---|---|---|---|
| TXN_2176024 | Coffee | 5 | 2.0 | 10.0 | Digital Wallet | In-store |
| TXN_6327139 | Sandwich | 4 | 4.0 | 16.0 | Credit Card | Takeaway |
| TXN_5488764 | Coffee | 4 | 2.0 | 8.0 | Digital Wallet | Takeaway |
| TXN_9530003 | Salad | 1 | 5.0 | 5.0 | Digital Wallet | Takeaway |
| TXN_3753993 | Sandwich | 5 | 4.0 | 20.0 | Credit Card | Takeaway |
| TXN_2251128 | Smoothie | 3 | 4.0 | 12.0 | Credit Card | In-store |
| TXN_3715065 | Salad | 3 | 5.0 | 15.0 | Credit Card | Takeaway |
| TXN_7608637 | Salad | 1 | 5.0 | 5.0 | Digital Wallet | Takeaway |
| TXN_1643122 | Juice | 3 | 3.0 | 9.0 | Credit Card | In-store |
| TXN_4176272 | Coffee | 1 | 2.0 | 2.0 | Digital Wallet | Takeaway |
| TXN_5741619 | Smoothie | 1 | 4.0 | 20.0 | Cash | Takeaway |
| TXN_1584851 | Smoothie | 1 | 4.0 | 4.0 | Credit Card | Takeaway |
| TXN_5801294 | Salad | 1 | 5.0 | 5.0 | Credit Card | Takeaway |
| TXN_6696619 | Cake | 3 | 3.0 | 9.0 | Credit Card | Takeaway |
| TXN_2153838 | Tea | 4 | 1.5 | 6.0 | Digital Wallet | In-store |
| TXN_7578769 | Sandwich | 5 | 4.0 | 20.0 | Digital Wallet | Takeaway |
| TXN_5226635 | Cookie | 4 | 1.0 | 4.0 | Credit Card | Takeaway |
| TXN_1237674 | Tea | 3 | 1.5 | 4.5 | Credit Card | Takeaway |
| TXN_2887971 | Smoothie | 2 | 4.0 | 8.0 | Digital Wallet | Takeaway |
| TXN_5511805 | Juice | 1 | 3.0 | 3.0 | Credit Card | Takeaway |
| TXN_9769782 | Smoothie | 5 | 4.0 | 20.0 | Cash | Takeaway |
| TXN_6068564 | Cake | 4 | 3.0 | 12.0 | Credit Card | Takeaway |
| TXN_7818024 | Cake | 3 | 3.0 | 9.0 | Credit Card | Takeaway |
| TXN_8626720 | Juice | 4 | 3.0 | 12.0 | Cash | Takeaway |
| TXN_8684125 | Salad | 2 | 5.0 | 10.0 | Credit Card | In-store |
| TXN_6915899 | Salad | 3 | 5.0 | 15.0 | Credit Card | In-store |
| TXN_4822256 | Smoothie | 1 | 4.0 | 4.0 | Credit Card | Takeaway |
| TXN_8570149 | Tea | 1 | 1.5 | 1.5 | Credit Card | Takeaway |
| TXN_3455702 | Salad | 1 | 5.0 | 5.0 | Cash | Takeaway |
| TXN_9625287 | Juice | 2 | 3.0 | 6.0 | Cash | In-store |
| TXN_5417192 | Cookie | 4 | 1.0 | 4.0 | Cash | In-store |
| TXN_2146829 | Salad | 4 | 5.0 | 20.0 | Cash | Takeaway |
| TXN_3171150 | Cake | 1 | 3.0 | 3.0 | Digital Wallet | Takeaway |
| TXN_9486849 | Cake | 1 | 3.0 | 3.0 | Cash | Takeaway |
| TXN_4758849 | Cake | 2 | 3.0 | 6.0 | Credit Card | Takeaway |
| TXN_4893692 | Salad | 2 | 5.0 | 10.0 | Credit Card | Takeaway |
| TXN_5048650 | Smoothie | 2 | 4.0 | 8.0 | Cash | Takeaway |
| TXN_1686323 | Smoothie | 4 | 4.0 | 16.0 | Digital Wallet | In-store |
| TXN_1819615 | Coffee | 4 | 2.0 | 8.0 | Credit Card | Takeaway |
| TXN_7952153 | Smoothie | 2 | 4.0 | 8.0 | Digital Wallet | Takeaway |
| TXN_5014959 | Cookie | 2 | 1.0 | 2.0 | Credit Card | In-store |
| TXN_6775972 | Coffee | 3 | 2.0 | 6.0 | Credit Card | Takeaway |
| TXN_3734446 | Coffee | 5 | 2.0 | 10.0 | Digital Wallet | Takeaway |
| TXN_5398922 | Salad | 1 | 5.0 | 5.0 | Cash | In-store |
| TXN_1555314 | Sandwich | 1 | 4.0 | 4.0 | Credit Card | Takeaway |
| TXN_3053494 | Cake | 5 | 3.0 | 15.0 | Digital Wallet | In-store |
| TXN_5823330 | Salad | 3 | 5.0 | 15.0 | Digital Wallet | In-store |
| TXN_6608817 | Sandwich | 5 | 4.0 | 20.0 | Credit Card | Takeaway |
| TXN_8016623 | Tea | 2 | 1.5 | 3.0 | Cash | Takeaway |
| TXN_5575420 | Smoothie | 3 | 4.0 | 12.0 | Credit Card | In-store |
| TXN_2710603 | Smoothie | 5 | 4.0 | 20.0 | Credit Card | Takeaway |
| TXN_3412484 | Cake | 4 | 3.0 | 12.0 | Credit Card | Takeaway |
| TXN_5132482 | Juice | 2 | 3.0 | 6.0 | Digital Wallet | In-store |
| TXN_3399636 | Juice | 3 | 3.0 | 9.0 | Digital Wallet | Takeaway |
| TXN_3601338 | Cake | 3 | 3.0 | 9.0 | Credit Card | Takeaway |
| TXN_3726397 | Salad | 5 | 5.0 | 25.0 | Credit Card | Takeaway |
| TXN_2831842 | Cake | 2 | 3.0 | 6.0 | Credit Card | Takeaway |
| TXN_8499618 | Cake | 2 | 3.0 | 6.0 | Credit Card | Takeaway |
| TXN_7950226 | Tea | 1 | 1.5 | 1.5 | Digital Wallet | In-store |
| TXN_2719734 | Cake | 5 | 3.0 | 15.0 | Digital Wallet | In-store |
| TXN_5573731 | Sandwich | 4 | 4.0 | 16.0 | Cash | Takeaway |
| TXN_2449402 | Smoothie | 5 | 4.0 | 20.0 | Cash | Takeaway |
| TXN_4653861 | Sandwich | 4 | 4.0 | 16.0 | Cash | Takeaway |
| TXN_3937509 | Smoothie | 2 | 4.0 | 8.0 | Credit Card | In-store |
| TXN_2886223 | Sandwich | 5 | 4.0 | 20.0 | Credit Card | Takeaway |
| TXN_8631468 | Cake | 1 | 3.0 | 3.0 | Credit Card | In-store |
| TXN_5966765 | Cake | 5 | 3.0 | 15.0 | Credit Card | Takeaway |
| TXN_8379919 | Cookie | 3 | 1.0 | 3.0 | Digital Wallet | Takeaway |
| TXN_2188356 | Tea | 1 | 1.5 | 1.5 | Credit Card | In-store |
| TXN_4664329 | Tea | 2 | 1.5 | 3.0 | Credit Card | Takeaway |
| TXN_9102030 | Smoothie | 4 | 4.0 | 16.0 | Digital Wallet | In-store |
| TXN_6684056 | Smoothie | 2 | 4.0 | 8.0 | Credit Card | Takeaway |
| TXN_8005489 | Cake | 3 | 3.0 | 9.0 | Credit Card | In-store |
| TXN_9138791 | Cake | 1 | 3.0 | 3.0 | Digital Wallet | In-store |
| TXN_3152531 | Coffee | 3 | 2.0 | 6.0 | Credit Card | Takeaway |
| TXN_1783857 | Coffee | 2 | 2.0 | 4.0 | Digital Wallet | In-store |
| TXN_5578796 | Tea | 4 | 1.5 | 6.0 | Credit Card | In-store |
| TXN_1317114 | Cookie | 2 | 1.0 | 2.0 | Digital Wallet | Takeaway |
| TXN_2693431 | Salad | 2 | 5.0 | 10.0 | Digital Wallet | Takeaway |
| TXN_2156218 | Smoothie | 2 | 4.0 | 8.0 | Digital Wallet | In-store |
| TXN_8538315 | Coffee | 1 | 2.0 | 2.0 | Digital Wallet | Takeaway |
| TXN_2335312 | Cake | 2 | 3.0 | 6.0 | Digital Wallet | Takeaway |
| TXN_3706457 | Tea | 5 | 1.5 | 7.5 | Credit Card | Takeaway |
| TXN_3125997 | Juice | 4 | 3.0 | 12.0 | Credit Card | Takeaway |
| TXN_8740257 | Cake | 5 | 3.0 | 15.0 | Digital Wallet | Takeaway |
| TXN_5845583 | Tea | 4 | 1.5 | 6.0 | Cash | In-store |
| TXN_8675558 | Tea | 5 | 1.5 | 7.5 | Credit Card | In-store |
| TXN_1034956 | Sandwich | 4 | 4.0 | 16.0 | Cash | In-store |
| TXN_6363897 | Salad | 5 | 5.0 | 25.0 | Credit Card | Takeaway |
| TXN_7176851 | Tea | 4 | 1.5 | 6.0 | Credit Card | Takeaway |
| TXN_7853635 | Salad | 3 | 5.0 | 15.0 | Digital Wallet | Takeaway |
| TXN_3342106 | Sandwich | 1 | 4.0 | 4.0 | Credit Card | In-store |
| TXN_5499117 | Salad | 4 | 5.0 | 20.0 | Digital Wallet | Takeaway |
| TXN_2815691 | Juice | 5 | 3.0 | 15.0 | Digital Wallet | Takeaway |
| TXN_4634772 | Juice | 3 | 3.0 | 9.0 | Credit Card | In-store |
| TXN_3163567 | Salad | 2 | 5.0 | 10.0 | Digital Wallet | Takeaway |
| TXN_7611120 | Juice | 2 | 3.0 | 6.0 | Cash | Takeaway |
| TXN_8379868 | Cake | 3 | 3.0 | 9.0 | Cash | In-store |
| TXN_5183041 | Cookie | 5 | 1.0 | 5.0 | Credit Card | In-store |
| TXN_2473090 | Tea | 2 | 1.5 | 3.0 | Credit Card | In-store |
data_pilih <- read.csv("D:\\DOWNLOAD\\ADE\\DATA PILIHAN ANALISIS.csv", header = TRUE, sep = ",")
knitr::kable(
head(data_pilih, 10),
caption = "10 Observasi Awal Data Cleaning"
)
| Item | Quantity | Location |
|---|---|---|
| Coffee | 5 | In-store |
| Sandwich | 4 | Takeaway |
| Coffee | 4 | Takeaway |
| Salad | 1 | Takeaway |
| Sandwich | 5 | Takeaway |
| Smoothie | 3 | In-store |
| Salad | 3 | Takeaway |
| Salad | 1 | Takeaway |
| Juice | 3 | In-store |
| Coffee | 1 | Takeaway |
data_pilih$Quantity <- as.numeric(data_pilih$Quantity)
data_pilih$Quantity <- as.numeric(data_pilih$Quantity)
struktur_pilih <- str(data_pilih)
## 'data.frame': 1000 obs. of 3 variables:
## $ Item : chr "Coffee" "Sandwich" "Coffee" "Salad" ...
## $ Quantity: num 5 4 4 1 5 3 3 1 3 1 ...
## $ Location: chr "In-store" "Takeaway" "Takeaway" "Takeaway" ...
knitr::kable(
struktur_pilih,
caption = "Struktur Variabel Data Pilih"
)
Table: Struktur Variabel Data Pilih
tabel_item <- as.data.frame(table(data_pilih$Item))
names(tabel_item) <- c("Item", "Frekuensi")
knitr::kable(
tabel_item,
caption = "Frekuensi Jenis Item"
)
| Item | Frekuensi |
|---|---|
| Cake | 138 |
| Coffee | 118 |
| Cookie | 110 |
| Juice | 114 |
| Salad | 126 |
| Sandwich | 123 |
| Smoothie | 136 |
| Tea | 135 |
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.3
ggplot(data_pilih, aes(x = Item)) +
geom_bar(
fill = "#CDB4DB",
color = "white"
) +
labs(
title = "Distribusi Jenis Item",
x = "Jenis Item",
y = "Frekuensi"
) +
theme_minimal()
Karena Quantity adalah variabel numerik, maka dapat melihat distribusinya menggunakan histogram, density plot, boxplot, dan Q-Q plot.
# Histogram
ggplot(data_pilih, aes(x = Quantity)) +
geom_histogram(
bins = 10,
fill = "#CDB4DB",
color = "white"
) +
labs(
title = "Distribusi Quantity",
x = "Quantity",
y = "Frekuensi"
) +
theme_minimal()
# Density Plot
ggplot(data_pilih, aes(x = Quantity)) +
geom_density(
fill = "#B7E4C7",
alpha = 0.7
) +
labs(
title = "Density Plot Quantity",
x = "Quantity",
y = "Density"
) +
theme_minimal()
# Bloxplot
ggplot(data_pilih, aes(y = Quantity)) +
geom_boxplot(
fill = "#FFD6A5"
) +
labs(
title = "Boxplot Quantity",
y = "Quantity"
) +
theme_minimal()
# Q-Q Plot
ggplot(data_pilih, aes(sample = Quantity)) +
stat_qq(color = "#8E9AAF") +
stat_qq_line(color = "#D4A5A5") +
labs(
title = "Q-Q Plot Quantity"
) +
theme_minimal()
ggplot(data_pilih, aes(x = Location)) +
geom_bar(fill = "#BDE0FE") +
labs(
title = "Distribusi Location",
x = "Location",
y = "Frekuensi"
) +
theme_minimal()
ggplot(data_pilih, aes(x = Item, y = Quantity)) +
geom_boxplot(
fill = "#CDB4DB"
) +
labs(
title = "Hubungan Jenis Item dengan Quantity",
x = "Jenis Item",
y = "Quantity"
) +
theme_minimal()
ggplot(data_pilih, aes(x = Location, y = Quantity)) +
geom_boxplot(
fill = "#A8DADD"
) +
labs(
title = "Hubungan Location dengan Quantity",
x = "Location",
y = "Quantity"
) +
theme_minimal()
Integrasi data merupakan proses menggabungkan data dari dua atau lebih sumber agar dapat digunakan secara bersama dalam analisis. Pada penelitian ini, data yang digunakan terdiri atas data populasi dan data sampel. Pada tahap ini, integrasi difokuskan pada tiga variabel yang dipilih berdasarkan tujuan analisis, yaitu Item, Quantity, dan Location.
Variabel Item digunakan untuk menggambarkan jenis barang yang dibeli, Quantity menunjukkan jumlah barang yang dibeli, sedangkan Location menunjukkan lokasi terjadinya transaksi. Ketiga variabel tersebut dipilih karena relevan dengan tujuan analisis yang akan dilakukan.
Dalam proses integrasi, Transaction.ID digunakan sebagai identifier (key) untuk mencocokkan data yang berasal dari populasi dan sampel. Setelah data dihubungkan berdasarkan key tersebut, hanya variabel Item, Quantity, dan Location yang digunakan sebagai informasi utama untuk tahap analisis selanjutnya.
Hasil integrasi kemudian diperiksa untuk memastikan bahwa data yang diperoleh sesuai dengan data asal, tidak terjadi duplikasi yang tidak diharapkan, serta tidak terdapat ketidaksesuaian antara data populasi dan data sampel. Dengan demikian, data hasil integrasi dapat digunakan sebagai dasar untuk tahap analisis berikutnya.
Encoding ialah proses mengubah representasi data ke bentuk atau kode tertentu sesuai kebutuhan analisis. Encoding tidak mengubah informasi yang mendasari data, tetapi hanya mengubah cara kategori tersebut direpresentasikan.
Dalam data yang digunakan untuk analisis terdapat 2 variabel kategorik, yaitu:
Kedua variabel tersebut dapat ditransformasikan menggunakan teknik encoding.
Label encoding memberikan satu kode numerik untuk setiap kategori. Kode tersebut hanya berfungsi sebagai label. jadi, angka 1 tidak berarti “lebih besar” daripada angka 0.
data_pilih$Item_Label <- as.numeric(factor(data_pilih$Item))
head(data_pilih[,c("Item", "Item_Label")], 50)
## Item Item_Label
## 1 Coffee 2
## 2 Sandwich 6
## 3 Coffee 2
## 4 Salad 5
## 5 Sandwich 6
## 6 Smoothie 7
## 7 Salad 5
## 8 Salad 5
## 9 Juice 4
## 10 Coffee 2
## 11 Smoothie 7
## 12 Smoothie 7
## 13 Salad 5
## 14 Cake 1
## 15 Tea 8
## 16 Sandwich 6
## 17 Cookie 3
## 18 Tea 8
## 19 Smoothie 7
## 20 Juice 4
## 21 Smoothie 7
## 22 Cake 1
## 23 Cake 1
## 24 Juice 4
## 25 Salad 5
## 26 Salad 5
## 27 Smoothie 7
## 28 Tea 8
## 29 Salad 5
## 30 Juice 4
## 31 Cookie 3
## 32 Salad 5
## 33 Cake 1
## 34 Cake 1
## 35 Cake 1
## 36 Salad 5
## 37 Smoothie 7
## 38 Smoothie 7
## 39 Coffee 2
## 40 Smoothie 7
## 41 Cookie 3
## 42 Coffee 2
## 43 Coffee 2
## 44 Salad 5
## 45 Sandwich 6
## 46 Cake 1
## 47 Salad 5
## 48 Sandwich 6
## 49 Tea 8
## 50 Smoothie 7
data_pilih$Location_Label <- as.numeric(factor(data_pilih$Location))
Setiap kategori Item dan Location telah direpresentasikan dalam bentuk angka. Angka tersebut hanya merupakan kode kategori dan tidak menunjukkan bahwa satu kategori lebih tinggi daripada kategori lainnya. Hal ini sesuai dengan konsep label encoding pada materi.
Ordinal encoding digunakan ketika kategori memiliki urutan atau tingkatan alami, misalnya :
Low < Medium < HIgh < Critical.
Pada data penelitian ini hanya memiliki variabel Item dan Location yang tidak memiliki urutan alami, sehingga ordinal encoding tidak diterapkan pada kedua variabel tersebut.
One-hot encoding membuat satu variabel indikator untuk setiap kategori. Nilai 1 menunjukkan observasi termasuk kategori tersebut, sedangkan 0 menunjukkan bukan kategori tersebut. Untuk data ini, teknik ini cocok karena Item dan Location merupakan kategori yang tidak memiliki tingkatan.
data_item <- model.matrix(~ Item - 1, data = data_pilih)
data_item <- as.data.frame(data_item)
head(data_item, 10)
## ItemCake ItemCoffee ItemCookie ItemJuice ItemSalad ItemSandwich ItemSmoothie
## 1 0 1 0 0 0 0 0
## 2 0 0 0 0 0 1 0
## 3 0 1 0 0 0 0 0
## 4 0 0 0 0 1 0 0
## 5 0 0 0 0 0 1 0
## 6 0 0 0 0 0 0 1
## 7 0 0 0 0 1 0 0
## 8 0 0 0 0 1 0 0
## 9 0 0 0 1 0 0 0
## 10 0 1 0 0 0 0 0
## ItemTea
## 1 0
## 2 0
## 3 0
## 4 0
## 5 0
## 6 0
## 7 0
## 8 0
## 9 0
## 10 0
data_location <- model.matrix(~ Location - 1, data = data_pilih)
data_location <- as.data.frame(data_location)
head(data_location, 10)
## LocationIn-store LocationTakeaway
## 1 1 0
## 2 0 1
## 3 0 1
## 4 0 1
## 5 0 1
## 6 1 0
## 7 0 1
## 8 0 1
## 9 1 0
## 10 0 1
data_encoded <- cbind(
data_pilih["Quantity"],
data_item,
data_location
)
head(data_encoded, 10)
## Quantity ItemCake ItemCoffee ItemCookie ItemJuice ItemSalad ItemSandwich
## 1 5 0 1 0 0 0 0
## 2 4 0 0 0 0 0 1
## 3 4 0 1 0 0 0 0
## 4 1 0 0 0 0 1 0
## 5 5 0 0 0 0 0 1
## 6 3 0 0 0 0 0 0
## 7 3 0 0 0 0 1 0
## 8 1 0 0 0 0 1 0
## 9 3 0 0 0 1 0 0
## 10 1 0 1 0 0 0 0
## ItemSmoothie ItemTea LocationIn-store LocationTakeaway
## 1 0 0 1 0
## 2 0 0 0 1
## 3 0 0 0 1
## 4 0 0 0 1
## 5 0 0 0 1
## 6 1 0 1 0
## 7 0 0 0 1
## 8 0 0 0 1
## 9 0 0 1 0
## 10 0 0 0 1
Hasil encoding harus divalidasi, dimana yang diperiksa antara lain kategori tetap terwakili, jumlah observasi tetap, representasi sesuai dengan kategori asal, dan makna data tidak berubah
nrow(data_pilih)
## [1] 1000
nrow(data_encoded)
## [1] 1000
str(data_encoded)
## 'data.frame': 1000 obs. of 11 variables:
## $ Quantity : num 5 4 4 1 5 3 3 1 3 1 ...
## $ ItemCake : num 0 0 0 0 0 0 0 0 0 0 ...
## $ ItemCoffee : num 1 0 1 0 0 0 0 0 0 1 ...
## $ ItemCookie : num 0 0 0 0 0 0 0 0 0 0 ...
## $ ItemJuice : num 0 0 0 0 0 0 0 0 1 0 ...
## $ ItemSalad : num 0 0 0 1 0 0 1 1 0 0 ...
## $ ItemSandwich : num 0 1 0 0 1 0 0 0 0 0 ...
## $ ItemSmoothie : num 0 0 0 0 0 1 0 0 0 0 ...
## $ ItemTea : num 0 0 0 0 0 0 0 0 0 0 ...
## $ LocationIn-store: num 1 0 0 0 0 1 0 0 1 0 ...
## $ LocationTakeaway: num 0 1 1 1 1 0 1 1 0 1 ...
unique(data_pilih$Item)
## [1] "Coffee" "Sandwich" "Salad" "Smoothie" "Juice" "Cake" "Tea"
## [8] "Cookie"
unique(data_pilih$Location)
## [1] "In-store" "Takeaway"
Sebelum melakukan encoding, variabel kategorik perlu dikenali sebagai factor. Dengan tujuan agar kategori disimpan sebagai level dan memudahkan proses transformasi.
data_pilih$Item <- factor(data_pilih$Item)
data_pilih$Location <- factor(data_pilih$Location)
str(data_pilih)
## 'data.frame': 1000 obs. of 5 variables:
## $ Item : Factor w/ 8 levels "Cake","Coffee",..: 2 6 2 5 6 7 5 5 4 2 ...
## $ Quantity : num 5 4 4 1 5 3 3 1 3 1 ...
## $ Location : Factor w/ 2 levels "In-store","Takeaway": 1 2 2 2 2 1 2 2 1 2 ...
## $ Item_Label : num 2 6 2 5 6 7 5 5 4 2 ...
## $ Location_Label: num 1 2 2 2 2 1 2 2 1 2 ...
One-hot encoding mengubah setiap kategori menjadi kolom indikator bernilai 0 atau 1. Teknik ini sesuai untuk variabel nominal karena tidak memberikan urutan pada kategori.
item_onehot <- model.matrix(~ Item - 1, data = data_pilih)
item_onehot <- as.data.frame(item_onehot)
head(item_onehot, 15)
## ItemCake ItemCoffee ItemCookie ItemJuice ItemSalad ItemSandwich ItemSmoothie
## 1 0 1 0 0 0 0 0
## 2 0 0 0 0 0 1 0
## 3 0 1 0 0 0 0 0
## 4 0 0 0 0 1 0 0
## 5 0 0 0 0 0 1 0
## 6 0 0 0 0 0 0 1
## 7 0 0 0 0 1 0 0
## 8 0 0 0 0 1 0 0
## 9 0 0 0 1 0 0 0
## 10 0 1 0 0 0 0 0
## 11 0 0 0 0 0 0 1
## 12 0 0 0 0 0 0 1
## 13 0 0 0 0 1 0 0
## 14 1 0 0 0 0 0 0
## 15 0 0 0 0 0 0 0
## ItemTea
## 1 0
## 2 0
## 3 0
## 4 0
## 5 0
## 6 0
## 7 0
## 8 0
## 9 0
## 10 0
## 11 0
## 12 0
## 13 0
## 14 0
## 15 1
location_onehot <- model.matrix(~ Location - 1, data = data_pilih)
location_onehot <- as.data.frame(location_onehot)
head(location_onehot, 5)
## LocationIn-store LocationTakeaway
## 1 1 0
## 2 0 1
## 3 0 1
## 4 0 1
## 5 0 1
data_encoded <- cbind(
data_pilih["Quantity"],
item_onehot,
location_onehot
)
head(data_encoded, 10)
## Quantity ItemCake ItemCoffee ItemCookie ItemJuice ItemSalad ItemSandwich
## 1 5 0 1 0 0 0 0
## 2 4 0 0 0 0 0 1
## 3 4 0 1 0 0 0 0
## 4 1 0 0 0 0 1 0
## 5 5 0 0 0 0 0 1
## 6 3 0 0 0 0 0 0
## 7 3 0 0 0 0 1 0
## 8 1 0 0 0 0 1 0
## 9 3 0 0 0 1 0 0
## 10 1 0 1 0 0 0 0
## ItemSmoothie ItemTea LocationIn-store LocationTakeaway
## 1 0 0 1 0
## 2 0 0 0 1
## 3 0 0 0 1
## 4 0 0 0 1
## 5 0 0 0 1
## 6 1 0 1 0
## 7 0 0 0 1
## 8 0 0 0 1
## 9 0 0 1 0
## 10 0 0 0 1
dim(data_pilih)
## [1] 1000 5
dim(data_encoded)
## [1] 1000 11
nlevels(data_pilih$Item)
## [1] 8
nlevels(data_pilih$Location)
## [1] 2
data_label <- data_pilih
data_label$Item_Label <- as.numeric(data_label$Item)
data_label$Location_Label <- as.numeric(data_label$Location)
dim(data_label)
## [1] 1000 5
dim(data_encoded)
## [1] 1000 11
colSums(is.na(data_encoded))
## Quantity ItemCake ItemCoffee ItemCookie
## 0 0 0 0
## ItemJuice ItemSalad ItemSandwich ItemSmoothie
## 0 0 0 0
## ItemTea LocationIn-store LocationTakeaway
## 0 0 0
Berdasarkan hasil tersebut, one-hot encoding memberikan beberapa dampak:
Transformasi data numerik dilakukan untuk mengubah nilai suatu variabel menggunakan fungsi matematis agar skala atau distribusinya lebih sesuai untuk analisis, tanpa menghilangkan informasi dasarnya.
Transformasi diperlukan terutama ketika:
Pada data yang dianalisis, variabel numerik yang digunakan adalah Quantity.
summary(data_pilih$Quantity)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 2.000 3.000 3.049 4.000 5.000
min_max <- function(x) {
(x - min(x, na.rm = TRUE)) /
(max(x, na.rm = TRUE) - min(x, na.rm = TRUE))
}
data_pilih$Quantity_MinMax <- min_max(data_pilih$Quantity)
head(data_pilih)
## Item Quantity Location Item_Label Location_Label Quantity_MinMax
## 1 Coffee 5 In-store 2 1 1.00
## 2 Sandwich 4 Takeaway 6 2 0.75
## 3 Coffee 4 Takeaway 2 2 0.75
## 4 Salad 1 Takeaway 5 2 0.00
## 5 Sandwich 5 Takeaway 6 2 1.00
## 6 Smoothie 3 In-store 7 1 0.50
data_pilih$Quantity_Z <- as.numeric(
scale(data_pilih$Quantity)
)
head(data_pilih)
## Item Quantity Location Item_Label Location_Label Quantity_MinMax
## 1 Coffee 5 In-store 2 1 1.00
## 2 Sandwich 4 Takeaway 6 2 0.75
## 3 Coffee 4 Takeaway 2 2 0.75
## 4 Salad 1 Takeaway 5 2 0.00
## 5 Sandwich 5 Takeaway 6 2 1.00
## 6 Smoothie 3 In-store 7 1 0.50
## Quantity_Z
## 1 1.35844879
## 2 0.66216545
## 3 0.66216545
## 4 -1.42668456
## 5 1.35844879
## 6 -0.03411788
mean(data_pilih$Quantity_Z, na.rm = TRUE)
## [1] 3.910967e-17
sd(data_pilih$Quantity_Z, na.rm = TRUE)
## [1] 1
Cek nilai nol terlebih dahulu
sd(data_pilih$Quantity_Z, na.rm = TRUE)
## [1] 1
sum(data_pilih$Quantity == 0, na.rm = TRUE)
## [1] 0
data_pilih$Quantity_Inv_Sq <-
1 / (data_pilih$Quantity^2)
head(data_pilih)
## Item Quantity Location Item_Label Location_Label Quantity_MinMax
## 1 Coffee 5 In-store 2 1 1.00
## 2 Sandwich 4 Takeaway 6 2 0.75
## 3 Coffee 4 Takeaway 2 2 0.75
## 4 Salad 1 Takeaway 5 2 0.00
## 5 Sandwich 5 Takeaway 6 2 1.00
## 6 Smoothie 3 In-store 7 1 0.50
## Quantity_Z Quantity_Inv_Sq
## 1 1.35844879 0.0400000
## 2 0.66216545 0.0625000
## 3 0.66216545 0.0625000
## 4 -1.42668456 1.0000000
## 5 1.35844879 0.0400000
## 6 -0.03411788 0.1111111
data_pilih$Quantity_MinMax <-
min_max(data_pilih$Quantity)
data_pilih$Quantity_Z <-
as.numeric(scale(data_pilih$Quantity))
data_pilih$Quantity_Inv_Sq <-
1 / (data_pilih$Quantity^2)
head(data_pilih)
## Item Quantity Location Item_Label Location_Label Quantity_MinMax
## 1 Coffee 5 In-store 2 1 1.00
## 2 Sandwich 4 Takeaway 6 2 0.75
## 3 Coffee 4 Takeaway 2 2 0.75
## 4 Salad 1 Takeaway 5 2 0.00
## 5 Sandwich 5 Takeaway 6 2 1.00
## 6 Smoothie 3 In-store 7 1 0.50
## Quantity_Z Quantity_Inv_Sq
## 1 1.35844879 0.0400000
## 2 0.66216545 0.0625000
## 3 0.66216545 0.0625000
## 4 -1.42668456 1.0000000
## 5 1.35844879 0.0400000
## 6 -0.03411788 0.1111111
mean(data_pilih$Quantity, na.rm = TRUE)
## [1] 3.049
sd(data_pilih$Quantity, na.rm = TRUE)
## [1] 1.436197
mean(data_pilih$Quantity_MinMax, na.rm = TRUE)
## [1] 0.51225
sd(data_pilih$Quantity_MinMax, na.rm = TRUE)
## [1] 0.3590492
mean(data_pilih$Quantity_Z, na.rm = TRUE)
## [1] 3.910967e-17
sd(data_pilih$Quantity_Z, na.rm = TRUE)
## [1] 1
mean(data_pilih$Quantity_Inv_Sq, na.rm = TRUE)
## [1] 0.2871489
sd(data_pilih$Quantity_Inv_Sq, na.rm = TRUE)
## [1] 0.3587741
Berdasarkan seluruh tahapan analisis yang telah dilakukan, data transaksi kafe terlebih dahulu melalui proses identifikasi, pemeriksaan kualitas, dan pembersihan data agar dapat digunakan dalam analisis. Variabel yang menjadi fokus analisis adalah Item, Quantity, dan Location, dengan masing-masing memiliki karakteristik data kategorik dan numerik yang berbeda sehingga memerlukan metode pengolahan yang sesuai.
Hasil Exploratory Data Analysis (EDA) digunakan untuk melihat distribusi masing-masing variabel serta hubungan antara Item dengan Quantity dan Location dengan Quantity. Analisis ini memberikan gambaran awal mengenai pola dan karakteristik data sebelum dilakukan analisis lebih lanjut.
Pada integrasi data, penggabungan data perlu memperhatikan identifier atau key agar tidak menghasilkan pencocokan data yang keliru. Oleh karena itu, Transaction_ID digunakan sebagai identifier, sedangkan Item, Quantity, dan Location digunakan sebagai variabel utama dalam analisis.
Untuk transformasi data kategorik, Item dan Location merupakan variabel nominal sehingga tidak memiliki urutan alami. Oleh karena itu, one-hot encoding lebih sesuai dibandingkan ordinal encoding karena tidak memberikan urutan atau makna numerik yang sebenarnya tidak dimiliki oleh kategori tersebut.
Sementara itu, pada transformasi data numerik, Quantity dapat ditransformasikan menggunakan Min-Max dan Z-Score untuk menyesuaikan skala data. Min-Max menghasilkan rentang 0–1, sedangkan Z-Score menunjukkan posisi relatif suatu nilai terhadap rata-rata. Transformasi invers memiliki sifat non-linear dan penggunaannya perlu mempertimbangkan keberadaan nilai nol.
Secara keseluruhan, tahapan analisis menunjukkan bahwa pengolahan data harus disesuaikan dengan karakteristik setiap variabel dan tujuan analisis. Proses mulai dari cleaning, eksplorasi, integrasi, encoding, hingga transformasi dilakukan bukan sekadar untuk mengubah bentuk data, tetapi untuk memastikan data memiliki representasi yang tepat dan dapat digunakan secara valid pada tahap analisis selanjutnya.