Data Science Programming
2025-05-24
1 Descriptive Visualizations
1.1 Transformed Business Dataset
library(knitr)
library(kableExtra)
# Baca dataset
data <- read.csv("data_dv.csv")
# Menampilkan tabel dengan scroll otomatis
options(knitr.kable.NA = '')
kable(data[, c("Transaction_ID", "Transaction_Date", "Customer_ID", "Product_Category",
"Quantity", "Unit_Price", "Total_Price", "Region")],
col.names = c("ID Transaksi", "Tanggal", "ID Pelanggan", "Kategori Produk",
"Jumlah", "Harga Satuan", "Total Harga", "Wilayah"),
align = 'lccclccc') %>%
kable_styling(full_width = FALSE) %>%
scroll_box(width = "100%", height = "400px")| ID Transaksi | Tanggal | ID Pelanggan | Kategori Produk | Jumlah | Harga Satuan | Total Harga | Wilayah |
|---|---|---|---|---|---|---|---|
| 7zmPHxF7XfN9 | 2021-07-14 | BAl3Y7yxev | Clothing | 2 | 15.18 | 30.36 | North |
| y4bCY9pKTBWU | 2020-11-16 | TYY0h5C190 | Electronics | 5 | 10.22 | 43.44 | West |
| 8k0B7XX19Ykf | 2023-03-22 | nUX640AaXg | Home | 3 | 17.74 | 50.56 | West |
| l8ahQz5YNOKz | 2023-01-02 | sBZyUSJLEP | Home | 6 | 28.30 | 132.44 | North |
| kmufgw8wx5qk | 2023-06-05 | GMfVH2ZWNX | Groceries | 3 | 11.91 | 31.09 | North |
| aI0KADT0mn7C | 2023-03-15 | YxqAmfTU9M | Clothing | 1 | 5.43 | 5.05 | North |
| zu0iP1OBFuNI | 2021-09-25 | ifYw95qmoL | Groceries | 2 | 13.37 | 18.72 | West |
| l0Bz1iXOUzUy | 2020-02-18 | F5zL0GjDJh | Clothing | 5 | 6.56 | 25.26 | South |
| kgU3mL1c8BdA | 2023-02-25 | Zm9ROmGygf | Clothing | 4 | 18.23 | 53.23 | South |
| MDp09wloF78Q | 2023-08-19 | fgldeSSYSL | Home | 1 | 11.94 | 10.87 | South |
| M8Wk6MDt6qq1 | 2020-01-24 | y5n7T2vCfd | Electronics | 2 | 21.06 | 33.70 | South |
| lH96iSOc84fn | 2020-12-21 | SS9WdTh6Gp | Books | 4 | 9.38 | 37.14 | North |
| NnorQ5sHIoaf | 2024-06-12 | 9l5PBRrmgl | Clothing | 3 | 15.61 | 38.87 | South |
| dEbUZoU5Sbu2 | 2020-06-13 | A03t0cAGgC | Clothing | 1 | 9.17 | 7.79 | South |
| o5Gqu5Y2GBZ4 | 2021-09-13 | 7hcyxq0KSE | Groceries | 1 | 16.31 | 12.40 | West |
| RYXFAjCauCpJ | 2024-04-04 | A9pnVHddZb | Electronics | 2 | 18.49 | 33.65 | East |
| BWBDxByvDM5r | 2021-02-13 | a4dbAEtGwn | Groceries | 0 | 3.87 | 0.00 | West |
| zZahZAWUvSQ4 | 2022-06-17 | R8Qx2GZT0X | Electronics | 2 | 13.98 | 22.65 | West |
| vJPOga9LZlsj | 2023-08-13 | QT4CDiQyhV | Books | 2 | 19.80 | 29.30 | South |
| Q1t7z4pMOxXd | 2021-08-23 | v9KVPPPsJB | Groceries | 0 | 12.19 | 0.00 | North |
| K6zf0MWYXYa3 | 2023-07-30 | NOlqxawsS2 | Groceries | 3 | 19.68 | 58.45 | East |
| 3tapZKt4h3rp | 2022-07-20 | iEHE4Sh6dH | Groceries | 3 | 13.27 | 37.82 | North |
| AoRFZgbfFxvh | 2022-09-23 | w1Qj2Kba4S | Groceries | 3 | 13.71 | 30.85 | North |
| Gy3belkqpTAy | 2021-09-12 | 8iJeK256qA | Electronics | 1 | 14.41 | 14.27 | East |
| Ol5tnddtoUjm | 2024-03-20 | c2B1Cp6SdR | Clothing | 2 | 22.96 | 45.92 | East |
| GiZt1ggZpIBA | 2023-05-20 | oNK8qhNcbT | Groceries | 0 | 9.77 | 0.00 | East |
| 173n85tjVH6q | 2022-05-09 | reDrX4hkKp | Electronics | 2 | 13.83 | 19.36 | East |
| in0FOKrAM1uq | 2020-09-15 | YRePsho5Lb | Home | 3 | 9.65 | 28.95 | East |
| xc7v7YBzhFnN | 2023-08-30 | jXwfGVvV5N | Electronics | 2 | 12.21 | 20.02 | South |
| s8ttrWpvZOBs | 2021-04-25 | BiYC2oc91b | Electronics | 4 | 6.83 | 27.05 | West |
| Ewe9x9xe1QCc | 2023-08-14 | EXAzpV85tG | Clothing | 6 | 12.85 | 58.60 | East |
| vZ8M37iAx3yU | 2020-01-24 | CDMnC5rG5p | Groceries | 1 | 12.93 | 9.96 | North |
| hilsiFUk05mI | 2023-03-27 | lKpaLe5Ulg | Electronics | 4 | 13.92 | 40.65 | East |
| Leq4Gi3KtEZB | 2020-10-25 | ANBrFxA6wx | Books | 2 | 6.08 | 9.36 | South |
| zVodqgm9GGMG | 2021-02-09 | j3dfHyqO9O | Home | 1 | 12.82 | 12.56 | West |
| rjqjiyAlxG5E | 2020-11-09 | Prr6AHVPDb | Clothing | 4 | 3.82 | 13.90 | North |
| KxzRhtpjeq9M | 2024-07-29 | L2TMQmpYjN | Home | 8 | 23.23 | 174.69 | West |
| H7Zf0nCfmxNW | 2023-08-08 | nZnAuRa6kv | Home | 2 | 13.58 | 24.99 | North |
| O8ogIQjq4H6D | 2022-04-15 | McSZh1M6LV | Home | 8 | 14.95 | 99.27 | North |
| 23X6P7v0Tkum | 2022-09-08 | bKwm5qJ8eQ | Home | 3 | 14.26 | 38.07 | North |
| yAJRegCnle8f | 2020-05-25 | cx4kEp8CTq | Electronics | 5 | 10.00 | 47.00 | North |
| 9Zc9XZbqWFIq | 2024-07-02 | u2UNPGzvGM | Clothing | 6 | 27.05 | 121.73 | East |
| RhwZUU5xCX8E | 2023-10-03 | XLMEBXjhI3 | Books | 5 | 11.87 | 56.98 | East |
| Be6H0Dk1kcOL | 2020-07-15 | nRLwRKCBNj | Groceries | 6 | 15.73 | 74.56 | South |
| ElCDeUaQfcVI | 2024-03-19 | ej149xbZ8x | Electronics | 3 | 18.16 | 53.94 | South |
| jqfViygzxl9A | 2020-08-13 | p89XCPPyOD | Books | 3 | 5.82 | 14.14 | North |
| vTMKTvXuKI0T | 2021-05-18 | Ome8ic2spy | Books | 6 | 11.66 | 65.06 | East |
| N8Wn2ihtH8vd | 2023-10-10 | uDDO1l3114 | Home | 4 | 19.73 | 71.03 | East |
| bIDoZubCoeR8 | 2022-09-10 | cXjEvmcnoz | Books | 3 | 11.87 | 32.05 | South |
| 1h65CzfzOoGT | 2021-12-27 | HA9AbKdK1p | Clothing | 3 | 8.14 | 21.98 | West |
| CkYDC3LcA05B | 2022-08-02 | p7GPSg9rjI | Home | 5 | 14.76 | 69.37 | West |
| pO5tWpHm8Ebt | 2023-06-22 | ML4tc831Qd | Books | 3 | 20.94 | 61.56 | East |
| eQtwc5RMzUFi | 2022-07-10 | V5zOh96PeD | Books | 5 | 13.63 | 49.07 | East |
| 9JIgS1jKeMSa | 2021-09-17 | SsaI3yxuiC | Home | 1 | 5.06 | 5.06 | East |
| CGr7oZEZk6f7 | 2020-09-18 | L01Aea5e7o | Electronics | 3 | 3.47 | 10.10 | East |
| qOYU7pmfExha | 2021-01-24 | hPlpLN3e0Y | Electronics | 1 | 8.16 | 6.85 | North |
| xu44wAuAI2Ob | 2020-05-09 | 5sFUACczC6 | Books | 6 | 7.36 | 34.44 | South |
| F1HoiWBfQYRv | 2023-10-27 | gasCKh5m7r | Groceries | 5 | 15.89 | 78.66 | South |
| ScZgw2KnDOm1 | 2022-10-23 | m13rwzbOp8 | Books | 2 | 17.35 | 28.45 | West |
| eZaaik4jrify | 2021-01-08 | E6G6fkQci0 | Books | 5 | 9.83 | 45.22 | West |
| pwHZ2RJEBpzB | 2023-11-29 | QvQkxBgv0a | Groceries | 4 | 10.43 | 36.71 | South |
| LSPqrRjfkxzy | 2022-02-08 | l3FIVSuBx0 | Groceries | 4 | 17.04 | 58.62 | East |
| ZuyxbC4P0zkn | 2022-10-11 | 1A35fVGWJI | Electronics | 4 | 15.38 | 57.21 | South |
| 9oWtxldxNF1L | 2021-11-28 | tsJM7kNdmn | Electronics | 0 | 17.79 | 0.00 | South |
| DJHIkQgwVBZf | 2021-10-11 | aimP2BXUkB | Clothing | 3 | 3.59 | 9.15 | North |
| NxV2bof9xv8m | 2020-02-09 | ur0hDynQhO | Electronics | 2 | 10.44 | 16.91 | East |
| vdkS32OBGCAt | 2021-05-31 | da3ON805VB | Home | 2 | 18.77 | 36.79 | East |
| 3PJQKENU11fp | 2020-02-02 | 964gZRxN3W | Groceries | 1 | 13.62 | 12.39 | North |
| llmumQZnv7Bl | 2022-08-02 | BeQ5Et9Qjm | Clothing | 5 | 9.84 | 37.88 | South |
| 6cdrfqE8Vgcy | 2020-04-12 | 9pRYpZdR3T | Home | 4 | 13.66 | 50.27 | East |
| eIompY0Sxlfp | 2023-06-05 | uxh3auRBBI | Clothing | 2 | 11.64 | 17.46 | East |
| HJ8aolc6rvTB | 2020-04-18 | C5At5ohS56 | Electronics | 4 | 7.73 | 23.50 | East |
| PyzX1HeveXfx | 2022-09-28 | flCZoSq9VK | Clothing | 5 | 19.94 | 94.72 | West |
| iLOIsP05DfSQ | 2023-09-14 | eUbB4WmVm8 | Clothing | 1 | 14.55 | 11.06 | East |
| Z2ehjY4ZVShP | 2024-08-19 | Bo9fdG8bZ6 | Groceries | 3 | 22.14 | 61.77 | North |
| uESnwmOrT9Y9 | 2020-03-16 | jhOrR6FANj | Home | 5 | 8.54 | 40.56 | South |
| Jmlq5JUBIcI6 | 2022-09-06 | HNzGjbrfJD | Home | 4 | 6.12 | 20.32 | West |
| sgqxw1OGVl3v | 2024-12-05 | P1zgCnGbR8 | Clothing | 5 | 13.76 | 65.36 | East |
| LPxWKd7tWotN | 2024-02-23 | re0cyS8m6o | Clothing | 1 | 12.56 | 9.04 | North |
| 3LObgCy1GIwb | 2024-04-19 | M9k1C31JJy | Clothing | 2 | 15.58 | 26.80 | West |
| KY9S73PXUbNy | 2022-01-02 | cFo6siKnvj | Books | 4 | 12.32 | 36.96 | East |
| q0Z9SdG66x1t | 2020-01-16 | s1J9ocq25P | Home | 3 | 9.23 | 19.94 | South |
| afVFuZcXmlWI | 2023-10-12 | wDTpgJS8FC | Home | 3 | 14.78 | 39.91 | West |
| CRcediCOUJyo | 2024-10-21 | wPuc8xUQh4 | Groceries | 3 | 27.46 | 69.20 | South |
| 8Tv9P5voCcTd | 2023-06-25 | 2zKcgSMz1e | Books | 1 | 9.07 | 7.53 | North |
| ctSuklQ2sLZ2 | 2022-10-02 | 4aBQZL2sgk | Groceries | 2 | 11.93 | 21.95 | East |
| ks7FF0rPhJRo | 2023-09-10 | rjHMp8p6Uk | Groceries | 2 | 17.75 | 25.20 | East |
| SLmyPfW732xL | 2022-09-14 | MUQ11wikdL | Clothing | 2 | 22.14 | 42.51 | South |
| mDnL1dUGL45w | 2024-07-11 | Rx0ac4ifBI | Electronics | 3 | 18.44 | 54.77 | East |
| lxtzHmPNxV38 | 2024-07-23 | qqi47mApPU | Books | 4 | 24.20 | 80.34 | North |
| loN2S5Gvrz8X | 2020-03-22 | 9g9CuO7Sbq | Electronics | 2 | 1.78 | 2.63 | West |
| pyv93p8Ni3AN | 2022-07-02 | 3bUiiErG8B | Clothing | 6 | 21.23 | 104.45 | South |
| FPK7MalXGwXr | 2020-11-20 | EooWiaNQWB | Electronics | 1 | 6.55 | 5.76 | South |
| lh3lF7nyL50R | 2024-07-03 | JglidgSaCj | Groceries | 4 | 16.62 | 65.82 | South |
| C3nJKzLhRMlm | 2023-10-15 | bcNQ1BA325 | Groceries | 3 | 10.45 | 26.02 | East |
| JGgiiR96TvIS | 2022-08-08 | pnvSzLykEK | Groceries | 5 | 14.67 | 56.48 | South |
| fP46wwu8CfFp | 2020-10-22 | 6vGnt89gE8 | Clothing | 2 | 18.93 | 35.21 | South |
| BwRrJsXd1PY8 | 2020-05-28 | EkORkE4TUQ | Electronics | 2 | 22.11 | 36.26 | West |
| VZ3hb9WnPJUe | 2022-09-22 | 2Oqxn5bkPR | Clothing | 4 | 8.62 | 33.79 | North |
| eVdMK2sWU8RD | 2024-05-11 | qOjg7DzuGb | Home | 2 | 20.43 | 30.64 | East |
| pnqxEn9IEb7c | 2020-04-09 | 9KfzbEYL4O | Clothing | 1 | 16.94 | 15.75 | North |
| 2ccUR7jiUHe7 | 2022-09-25 | X0epzADTlf | Clothing | 4 | 13.02 | 44.79 | South |
| JcARmKm72Jop | 2020-10-24 | CVcmAl1i0E | Electronics | 6 | 8.91 | 46.51 | North |
| 2oTEL8R5rX6s | 2021-02-05 | ohW2eA1bRT | Clothing | 1 | 10.48 | 9.64 | West |
| O7zv4sGcTWZr | 2020-03-31 | XGwuFFmjUS | Home | 3 | 12.99 | 30.40 | East |
| IIOJrQQPbZdp | 2022-02-19 | poZDYaQFXX | Home | 3 | 20.99 | 52.89 | North |
| eXg2WnEyT0Av | 2023-04-19 | X5QdRgn3Q1 | Home | 4 | 19.44 | 74.65 | South |
| XgMkSH8pOn8V | 2022-12-13 | CUSV68x3zo | Home | 2 | 15.60 | 29.64 | West |
| LqhlaTovgiXQ | 2022-04-30 | UKVHApcvpL | Clothing | 7 | 12.49 | 72.57 | North |
| q4si56o7mCp1 | 2020-10-14 | mgUUtDxONb | Books | 2 | 12.49 | 18.49 | East |
| BUzB07VKXiRX | 2021-12-20 | fys5NOYO8L | Home | 1 | 9.25 | 7.68 | West |
| liYFDdvwN9jU | 2024-11-16 | BK0BF0ILrY | Electronics | 2 | 16.60 | 32.20 | South |
| Fp8aGw9uhH3h | 2020-02-29 | 8HSULOLjYq | Home | 3 | 15.48 | 36.22 | South |
| AAVK2qJTNeun | 2023-08-01 | vO7bkFFB8q | Electronics | 2 | 18.21 | 29.86 | South |
| O8IHFmfSNGIT | 2022-04-28 | nb66A3qwSl | Clothing | 5 | 15.21 | 69.21 | West |
| O1r8wYG2VUNZ | 2024-07-01 | w5ziZtmrXN | Home | 2 | 16.72 | 26.75 | North |
| y5im2CKZ05SR | 2022-08-26 | H4ENrKlagt | Books | 2 | 18.66 | 36.95 | West |
| lrBl6DtnAzoR | 2021-01-11 | ok7K8VYrhm | Clothing | 5 | 18.67 | 83.08 | West |
| asokqPsut0cS | 2021-09-29 | smv4ZS8a7x | Home | 1 | 7.65 | 5.97 | North |
| ZtAl7lGwRXAg | 2021-03-02 | AvuBeevTFW | Books | 3 | 12.28 | 29.84 | East |
| nlDCdlop7Hq6 | 2021-03-17 | T8jDdv7f4E | Clothing | 3 | 12.25 | 29.40 | South |
| 1PaWvGiAokHB | 2023-02-09 | 02kNipUny9 | Groceries | 3 | 13.11 | 36.58 | East |
| cbrd5rqU41Jj | 2021-08-06 | bqJMsUqKEf | Groceries | 5 | 7.01 | 27.69 | North |
| zShwShp3PXj9 | 2023-08-01 | W1oqpuRu63 | Electronics | 1 | 15.99 | 11.35 | East |
| M10ng1IwHMVG | 2022-08-08 | x6YJJbNTKQ | Electronics | 0 | 17.28 | 0.00 | North |
| uBc2nfj2Xck9 | 2024-03-16 | 2FQwpxz6IB | Clothing | 4 | 25.38 | 74.11 | North |
| Rh6lda01A4Ty | 2023-03-10 | QDkUQ1IPME | Groceries | 6 | 6.45 | 35.60 | South |
| RwKUpp870jmD | 2024-10-07 | aH0XG2YQgA | Books | 4 | 14.49 | 52.74 | East |
| WBSWLj2HAHhq | 2022-08-26 | A5H722gpjc | Books | 3 | 12.44 | 26.87 | South |
| Vx4Wi6mRRjU6 | 2020-11-06 | TYVW0hvsNk | Electronics | 2 | 1.68 | 2.45 | South |
| vEestyT5vJTY | 2022-06-30 | H1VhjUwNeY | Electronics | 3 | 10.25 | 25.22 | West |
| odMT8EqozjNV | 2021-04-18 | 8BTzXeZmpE | Groceries | 5 | 8.11 | 33.66 | South |
| vZPDoU9ib6DX | 2022-03-21 | SWDnu6zMN9 | Groceries | 0 | 10.39 | 0.00 | North |
| 58kswFDCBC8h | 2024-04-26 | pgrao4LHkR | Books | 4 | 7.06 | 28.24 | West |
| KNkHl4fumjJd | 2020-02-11 | t7zeePWsAI | Groceries | 1 | 11.07 | 9.96 | East |
| QKk1OIAc5Dz7 | 2022-01-29 | VYl7kfBMV1 | Home | 5 | 10.84 | 41.73 | East |
| 2tV3y9n9QBhn | 2023-06-28 | 8VedXktgYT | Home | 1 | 23.60 | 23.13 | South |
| x2ZQHLvuynAG | 2024-01-04 | qtiwC54fTZ | Clothing | 2 | 21.98 | 35.61 | South |
| lpY8l5hpUXf2 | 2024-08-19 | z0mihMjctT | Electronics | 0 | 10.73 | 0.00 | West |
| 7g4JlLXtRK2O | 2020-01-25 | xWp4t6qBvN | Clothing | 5 | 10.49 | 50.35 | North |
| HGZdJgXleURJ | 2021-12-03 | sk3LEiPDUw | Electronics | 3 | 9.03 | 23.84 | East |
| f0PqNqOjjKno | 2024-04-16 | yUeNrqOIZf | Books | 3 | 22.44 | 59.24 | East |
| zrAaETj1wwtb | 2023-06-15 | Q2RAx1cIdd | Books | 3 | 16.27 | 39.54 | South |
| JeFqxSwBaOx9 | 2021-06-09 | TNHEQp6CUl | Books | 2 | 9.21 | 13.45 | West |
| UkCPTRWN3rQ6 | 2021-09-14 | DisBvZ7A6p | Groceries | 4 | 14.19 | 44.84 | West |
| KQg3IUgUhdOV | 2020-09-18 | JpTLYzmZ9h | Clothing | 2 | 10.76 | 18.51 | North |
| TkzUwXwuWnCv | 2024-03-07 | beGnG3hdY4 | Clothing | 7 | 17.18 | 102.22 | East |
| ilWJzX12QavR | 2022-07-31 | liCRXvQqqq | Electronics | 0 | 24.10 | 0.00 | East |
| 1qOhdrPzACRS | 2020-10-25 | UdDDlchznV | Electronics | 3 | 7.35 | 15.66 | East |
| uT5HvxoA6Q4d | 2024-01-09 | ZlCR4urRpH | Home | 1 | 15.65 | 12.21 | North |
| VZbSsPUVfHtJ | 2021-12-20 | Vw0hSvnQJd | Books | 2 | 4.27 | 8.20 | South |
| sonvcAeTslrc | 2021-01-03 | cv9AhZ50IY | Home | 2 | 11.80 | 22.42 | West |
| TvdHxKvgAMvy | 2021-05-26 | t9PIv3ddtp | Groceries | 5 | 16.45 | 78.14 | West |
| SI3dtpX9pry4 | 2022-01-27 | TdkXh4L5wd | Electronics | 5 | 3.64 | 14.74 | East |
| rBMzRrABC1g0 | 2023-10-24 | ozCMsyJJ0P | Home | 5 | 14.75 | 56.05 | East |
| NykunDd5Ly4o | 2022-01-23 | PYApLzGm0J | Home | 3 | 8.09 | 19.17 | East |
| XF9Rjwmpc89c | 2022-03-09 | JGpi2AvHwV | Books | 4 | 21.21 | 74.66 | West |
| DqJmYozHBi0y | 2022-05-11 | A5zt8aY7LD | Clothing | 4 | 20.79 | 66.53 | South |
| S3C60vByLv8q | 2023-06-01 | tN6OJh4inW | Clothing | 0 | 17.67 | 0.00 | East |
| ldoVNt44ixCR | 2022-02-12 | i8RcDHAHX9 | Books | 3 | 21.15 | 62.18 | North |
| CvYNAyNUDKek | 2023-05-22 | 5vyI8xT0Hb | Clothing | 0 | 11.66 | 0.00 | North |
| CHCZAwV2tCBZ | 2020-10-20 | OnTihZC0AZ | Books | 4 | 14.75 | 52.51 | West |
| ayFn8FrcHewS | 2021-08-29 | mnyqlEfZZB | Groceries | 4 | 9.07 | 35.92 | North |
| FWk9rdy9CqW7 | 2024-03-21 | WQ1LiIJgck | Clothing | 3 | 19.60 | 58.80 | North |
| pqJtisKz710D | 2022-02-02 | vcRLieEJvx | Groceries | 0 | 12.50 | 0.00 | East |
| h2MVx68cJUm0 | 2022-02-21 | vSmGmBcWed | Groceries | 2 | 12.61 | 19.67 | West |
| OfguuGz4WsCa | 2021-06-29 | giQWIBNahl | Groceries | 3 | 14.73 | 41.54 | South |
| 8vIGKD7riwv6 | 2021-03-01 | Lh1fleaBFm | Clothing | 5 | 5.48 | 22.19 | North |
| Kj9h6cmZVH1J | 2021-04-15 | PIezw6rGGi | Home | 3 | 10.75 | 27.09 | North |
| R5VzCu6bKrEI | 2020-07-06 | zStFgqesJx | Clothing | 3 | 10.86 | 24.11 | West |
| Fi0QRepasHyn | 2020-09-10 | hGk0RoggCq | Clothing | 7 | 7.98 | 44.69 | West |
| bo9GgJrgy7nY | 2020-09-24 | sgSA2IKfbt | Books | 6 | 10.52 | 53.65 | West |
| vHfB6DC3yFlO | 2021-10-01 | jo7FWMSuJC | Electronics | 4 | 10.41 | 41.64 | East |
| FnE9BwYjOEAz | 2023-12-04 | A15eaI8YDC | Electronics | 1 | 24.09 | 20.72 | South |
| t4Vtm6LjZXqH | 2020-02-10 | mTI5cFqBar | Home | 4 | 13.57 | 38.54 | West |
| kBpb2VZiQiFu | 2023-05-01 | WwG7DNB7dv | Electronics | 2 | 30.83 | 54.26 | North |
| Hwx8fwRSpgIc | 2024-05-20 | 1bfU7mZFtV | Clothing | 6 | 14.02 | 69.82 | North |
| YXvJMLDwIz9q | 2022-04-03 | hROHc63MHv | Books | 1 | 18.07 | 17.17 | North |
| bpcSn7xXvX6Y | 2021-10-25 | Ot0txvc6qE | Groceries | 8 | 22.49 | 152.93 | South |
| yUYvLwyqfExY | 2023-01-26 | UKggyAVZc1 | Home | 3 | 17.50 | 46.73 | South |
| TvEk1FrNB9oo | 2021-06-20 | hOe7jBP9Nj | Groceries | 3 | 6.58 | 16.98 | East |
| XIgqtuJpJLP8 | 2020-12-13 | 7AMkKQHfhG | Clothing | 3 | 4.97 | 14.31 | West |
| rDJXQMmrmVm0 | 2020-04-16 | cO8LKPbUdr | Clothing | 2 | 9.82 | 17.87 | East |
| WomybJGdxO17 | 2020-11-12 | XCGGx6fdGb | Home | 5 | 16.55 | 57.92 | East |
| nJdRVLGcO5xq | 2022-11-03 | tHKKxIVI9z | Clothing | 4 | 17.75 | 70.29 | South |
| SBLQBgJnS35A | 2020-06-10 | f0tZDm9Dbb | Clothing | 4 | -0.69 | -2.37 | West |
| sPX5vaqPvy53 | 2021-09-27 | 2LNuHckq2L | Home | 4 | 8.50 | 28.90 | North |
| iOM6TBHva4Xu | 2021-12-06 | 3hOYBreqO9 | Groceries | 3 | 11.95 | 32.98 | East |
| 1LnkY8Ao8rF4 | 2024-06-18 | Hove1DzZaH | Home | 3 | 10.71 | 26.99 | West |
| 3qYOvvZHha4F | 2024-04-16 | Eo8y8ll6q8 | Books | 6 | 21.47 | 109.50 | South |
| 3fBrllB8itPJ | 2022-06-24 | FyriaIGguB | Groceries | 1 | 1.69 | 1.32 | West |
| eb9uAdSKPf2K | 2024-09-16 | m769nsubP0 | Books | 5 | 18.72 | 66.46 | South |
| hO1xLsWZE54x | 2022-03-06 | HSmlwGKHf4 | Home | 1 | 12.04 | 8.43 | North |
| LoS5Bo5l7kIi | 2021-09-21 | xqPlMUFm8J | Books | 1 | 9.54 | 7.25 | North |
| Kivg6peHKaXY | 2022-11-26 | 5mi4Nr48hS | Electronics | 3 | 12.58 | 34.72 | East |
| FXmB2bYPVjqY | 2023-03-07 | GV2mFh8sTj | Groceries | 3 | 17.57 | 36.90 | North |
| PEgjegGISMRy | 2023-10-24 | lKqPgUDfgI | Books | 4 | 17.98 | 71.20 | North |
| rYaJcHzjfedi | 2022-10-05 | 8LlCQ3Lwjj | Electronics | 5 | 12.87 | 61.78 | East |
| hNwHp3dkGyd2 | 2022-02-11 | dO1i1ty7Zo | Books | 4 | 4.38 | 15.07 | North |
| Yj253L2RvbjL | 2024-04-19 | u6vhTc5U45 | Clothing | 3 | 10.80 | 26.24 | West |
| 0kgKWZOpEp6Z | 2020-03-18 | 0NwgTyo7P2 | Clothing | 5 | 2.65 | 10.60 | North |
| nmHsRLi9hBLR | 2021-06-09 | t8cMcGO4S1 | Home | 1 | 15.81 | 14.07 | North |
| IubP7EcgZLby | 2024-08-18 | px0UCD8GLy | Electronics | 2 | 16.78 | 26.51 | South |
| Oq2Q116wd9RP | 2023-01-25 | 9tkEtvptrf | Books | 5 | 17.35 | 71.14 | West |
| EgDphW3clNf1 | 2024-10-30 | nbo0AU26zI | Books | 0 | 10.21 | 0.00 | East |
| BjSRouuuvXd3 | 2021-04-27 | Gix23JRAR6 | Books | 2 | 9.32 | 14.73 | West |
| PWfMOF9WnRkd | 2020-06-30 | ZIAtNmn5Ti | Clothing | 6 | 12.81 | 72.25 | South |
| tNxivNmDUgSw | 2024-02-06 | H9JczWFcjV | Clothing | 2 | 17.11 | 26.69 | North |
| L0D2L6jjes7G | 2023-02-24 | th8YMleatt | Electronics | 3 | 15.42 | 35.62 | East |
| sythvk6XLiLk | 2024-12-27 | sTTCdLZRb4 | Books | 3 | 17.64 | 48.16 | West |
| KHHCHGAAHVMw | 2024-02-25 | Q31COjcyeP | Home | 1 | 24.05 | 22.85 | North |
| ZXjJpeDLWuzI | 2024-04-27 | U6eGOO2tQN | Clothing | 3 | 14.93 | 41.21 | North |
| JdlEF8r6hXBC | 2024-09-11 | RF0MoV8zjw | Groceries | 5 | 21.38 | 88.73 | East |
| qfrcov0TYDwy | 2024-03-09 | aiAwa6t6Zs | Books | 5 | 22.49 | 100.08 | South |
| QoFaRB0N7xSE | 2022-09-18 | NdVtNX32YD | Clothing | 3 | 8.05 | 18.60 | West |
| nfafjf9bvNsh | 2020-12-02 | Bx331NLajO | Clothing | 4 | 10.61 | 35.23 | East |
| jHQjnQGmBA0N | 2021-06-22 | 3hEvff6VvM | Home | 1 | 11.94 | 9.07 | East |
| Zn0sUbfPmjqf | 2024-04-14 | C5JWsdhWnQ | Home | 6 | 23.15 | 122.23 | North |
| jtCyoaWv1iSk | 2023-04-18 | 74rWUzgiV5 | Books | 1 | 20.57 | 14.81 | East |
| 2g9FGaHFpkT8 | 2022-05-17 | Qdyl5tv9MM | Groceries | 3 | 13.99 | 29.38 | South |
| AuGsHtZghGKM | 2020-07-30 | EpkIL2oVAb | Electronics | 3 | 10.68 | 25.31 | East |
| MLh6B5RvRGDn | 2024-05-29 | 89tAlWQZgY | Groceries | 4 | 14.40 | 43.78 | East |
| F3NuBLSx62e4 | 2020-07-19 | W6W9JQbgSp | Groceries | 5 | 9.01 | 39.64 | East |
| JGm8fuIiMQjG | 2023-11-25 | tK2ukPHjIQ | Groceries | 2 | 10.85 | 20.83 | North |
| lVgRce2mXR4p | 2020-03-02 | Txuw4WBwP4 | Electronics | 9 | 5.17 | 44.67 | North |
| WwFlSt7kQpwG | 2023-07-16 | ZzZ0yraITq | Books | 3 | 9.90 | 29.40 | South |
| xf0h344y6Py1 | 2023-11-06 | ZkBJlvEnA4 | Groceries | 3 | 20.18 | 50.25 | East |
| qdSqpTzXjrxU | 2023-02-21 | fliL3quI1a | Clothing | 1 | 21.57 | 15.31 | North |
| 7F8Vruoaoigz | 2022-12-22 | qOW6sZiEvx | Clothing | 3 | 11.94 | 30.45 | West |
| JNpDxtt65wgH | 2021-07-14 | Uln585SSvO | Home | 2 | 6.36 | 11.58 | North |
| VVXyQI6Pd2u4 | 2021-07-26 | lJ4EGeYjB4 | Home | 3 | 11.56 | 28.78 | West |
| w9giE5HXGZjP | 2024-07-09 | DQxd8yalnF | Electronics | 4 | 29.21 | 84.12 | South |
| PmzdOUYYP6Gw | 2024-11-27 | aZQikTJkwZ | Clothing | 6 | 28.21 | 120.17 | South |
| ncIVVMOG0skY | 2021-06-23 | Hg790cbc9O | Clothing | 4 | 3.40 | 12.38 | North |
| Y7Cnum6Q2EFA | 2020-01-02 | Wf3kpyPIrr | Home | 3 | 8.22 | 23.43 | East |
| 7gmaX9MXVgAY | 2021-11-01 | hJpribaov3 | Electronics | 2 | 19.67 | 36.19 | East |
| ZvZyTmU18spD | 2024-07-29 | Kv6sy3Orpy | Groceries | 6 | 17.81 | 100.45 | West |
| 43zdwahU5Hfl | 2023-02-24 | NMbPhA1NdG | Books | 2 | 23.99 | 40.30 | West |
| 2dO9m5n4VTPj | 2023-05-16 | A9ytkotAOZ | Electronics | 0 | 14.33 | 0.00 | East |
| bs3rLZxR2gwa | 2022-02-09 | XrdueCAoPK | Books | 2 | 17.02 | 28.59 | North |
| hSMbzJUzy0Vv | 2022-01-10 | 6xv9Pul8RC | Groceries | 7 | 15.12 | 100.55 | North |
| izHVAp1LGslq | 2020-09-25 | mRdaqwo7g0 | Groceries | 5 | 26.15 | 128.14 | North |
| 8975KfY8Juth | 2022-11-01 | L5KWifD5sj | Groceries | 1 | 18.60 | 13.76 | West |
| ciUc8eAtgXMf | 2021-12-05 | jYgeWepLcf | Home | 5 | 5.97 | 24.78 | North |
| rY3pdII4vOf1 | 2021-10-31 | RjN2SroAao | Clothing | 3 | 8.98 | 26.67 | West |
| 995Ua9NmSTQA | 2024-05-05 | JGPA0xbjpt | Groceries | 3 | 19.85 | 47.64 | South |
| ko8LzjcYISR9 | 2021-03-19 | 7OXBJ9DjXe | Home | 1 | 2.49 | 2.09 | South |
| h0j1231ESsnG | 2021-11-07 | ElTjuH2CFo | Books | 2 | 2.98 | 4.71 | West |
| Z1qAedecxA8H | 2024-05-01 | Kot3oATm6m | Clothing | 3 | 12.39 | 28.99 | West |
| DXeHbW0ohc6f | 2023-05-06 | bxXNgsVq4e | Clothing | 2 | 14.26 | 23.96 | North |
| 6lxAsKEcx2I8 | 2022-06-30 | NCvu2eYXwU | Home | 4 | 20.19 | 71.07 | South |
| qQu9uttvNIIf | 2022-10-30 | KTglJ1eD5y | Books | 1 | 12.63 | 12.12 | South |
| tATJFK9muWma | 2022-08-24 | GJrCzmKce3 | Home | 0 | 14.81 | 0.00 | North |
| vBGYbb8oXICY | 2023-07-02 | tePLYDmj0x | Electronics | 0 | 15.68 | 0.00 | East |
| ecU9v5clLo2c | 2023-05-09 | jDB1X4NlTA | Home | 3 | 12.47 | 35.17 | East |
| KoHpstfXHmaD | 2024-11-03 | oycVI7Xdo1 | Home | 1 | 24.81 | 22.58 | North |
| YCdxNWs8uR7I | 2024-03-18 | hN4R0eehMV | Books | 6 | 12.52 | 62.35 | West |
| q1ESakqogWUy | 2022-04-29 | eIcpJBeciK | Electronics | 5 | 12.86 | 62.37 | East |
| Xdz0vvVCNLxW | 2020-06-29 | pSX7B7Qk6u | Groceries | 0 | 8.26 | 0.00 | West |
| XEeGueG0KYLg | 2022-01-20 | Yv4Xys1sR7 | Books | 4 | 16.66 | 62.64 | East |
| ZY0nKmllcwdI | 2023-07-31 | y98qCX1I3F | Groceries | 3 | 24.04 | 52.65 | West |
| 3baQSkVJoGvd | 2024-11-22 | 923KeMvECL | Clothing | 2 | 20.57 | 38.67 | North |
| OQHEOVmhSQKE | 2021-04-07 | 8YsG4sdAmJ | Books | 3 | 18.91 | 54.46 | West |
| Tgu7BRNP9yz0 | 2021-08-27 | yUgLC2uH3U | Electronics | 3 | 15.82 | 36.54 | North |
| JbobVWQuMJDU | 2023-08-29 | hgXG04TMeD | Home | 0 | 12.88 | 0.00 | West |
| uojNVU8RJjpX | 2020-03-24 | Vqw5KJ5sOt | Electronics | 3 | 10.41 | 21.86 | West |
| 9EHBmSe2Hbw7 | 2022-09-11 | Zt0ULljeSb | Home | 2 | 20.88 | 37.17 | South |
| 7dvznz1Zc7mr | 2021-04-08 | ihwq2Dvgl3 | Books | 3 | 4.19 | 9.93 | West |
| DzUP3zBiY9bD | 2022-09-10 | uHkcX1ybPM | Clothing | 5 | 15.62 | 68.73 | South |
| TrDniWu1GSWT | 2020-08-12 | 11Wb15uk4J | Home | 6 | 9.22 | 47.02 | East |
| I9TeYhSJMUJg | 2024-05-15 | s8EXMivtga | Home | 3 | 22.39 | 61.12 | North |
| ViQ8IgeTeDZy | 2023-01-30 | 5EQ5MzBRj8 | Electronics | 3 | 19.75 | 47.40 | East |
| 8jesfKO3iHtq | 2020-06-19 | zn8iPJzka7 | Groceries | 9 | 11.51 | 99.45 | West |
| ckmyt7wNJaLg | 2021-05-03 | MeUL2lRY8f | Books | 4 | 19.46 | 73.17 | East |
| NQruinpkcONs | 2024-08-12 | 6UaPE4hjfu | Clothing | 6 | 10.37 | 49.78 | East |
| 4e2GyVVUi2kU | 2022-07-10 | dyYthz8z6Y | Home | 5 | 18.55 | 84.40 | South |
| vTjiVOl9dTGB | 2021-11-24 | DgsyTaQ3PZ | Books | 3 | 4.10 | 9.47 | East |
| pAZZU8BXsaLx | 2024-05-09 | XNhPVppKti | Home | 6 | 20.94 | 101.77 | South |
| SWUpTsiioQhO | 2024-05-08 | rqZivFYiaq | Groceries | 1 | 18.45 | 15.68 | East |
| 4c0gMZQ3Ro5H | 2022-10-19 | YMlOGaDUw6 | Electronics | 5 | 18.84 | 86.66 | South |
| FV26zwhtUd1L | 2024-09-04 | 5atN3exITS | Books | 7 | 18.39 | 126.16 | South |
| O8nXmpfRvm2y | 2023-12-15 | zZdWG7ohbO | Groceries | 5 | 8.16 | 37.13 | West |
| 88UkYxI7sr10 | 2024-04-27 | lQbsuhpwLc | Home | 2 | 7.96 | 13.37 | East |
| 9hwdoC44nzdZ | 2023-05-15 | aow2ZftJrU | Groceries | 2 | 18.70 | 35.53 | South |
| 5Cdyor9Uhn6Y | 2023-01-13 | aMnuI4TzyA | Electronics | 2 | 15.63 | 25.32 | West |
| hKALLR9AkURz | 2020-06-01 | b6tRKh0kBg | Clothing | 3 | 7.14 | 16.49 | North |
| g3jYUqSCezi1 | 2022-08-18 | PU6enpUfAs | Clothing | 3 | 12.44 | 29.48 | South |
| U9f1m1kDu319 | 2020-08-27 | rzNf7lSvYd | Books | 5 | 6.64 | 25.23 | West |
| dzYODuD2hLMH | 2020-02-18 | ztbrMe9OZj | Books | 1 | 9.21 | 8.93 | East |
| OzhKsiymmayH | 2023-03-08 | MInUbGvsaQ | Home | 2 | 11.34 | 17.01 | East |
| tldnbDya9BWh | 2020-06-04 | 5zBnUpjczA | Home | 4 | 0.08 | 0.31 | West |
| ZL07MjdK0pd4 | 2020-09-30 | kji16bd55T | Electronics | 5 | 8.90 | 34.71 | North |
| O8fJllvS2eWD | 2024-05-09 | HkntphLXHu | Books | 1 | 23.23 | 19.28 | East |
| G1VdRO7y2Pyq | 2023-06-03 | OlyN0TRPr5 | Home | 2 | 25.39 | 37.58 | West |
| 5GbO8uvG2bBj | 2022-01-31 | Qq7IkZom6H | Groceries | 4 | 14.01 | 53.24 | East |
| 6mW5JGzMUwui | 2020-06-18 | N9k3D8TiPg | Home | 5 | 9.60 | 33.60 | North |
| nGkXhbbGEcMr | 2020-10-18 | QkQJtdrXgF | Home | 5 | 14.81 | 70.35 | West |
| gu0j1IKh1qXk | 2020-05-27 | PY27AIrcBj | Home | 1 | 10.27 | 8.93 | East |
| gQotrPilhJaO | 2021-12-19 | NTrY5fx0Sg | Groceries | 3 | 9.83 | 28.02 | North |
| VOCzzxDOxQps | 2020-07-07 | 0S9qOEuCr9 | Clothing | 3 | 1.31 | 3.46 | West |
| yYl9KuNU5KqN | 2023-02-10 | leeMSGIN8F | Electronics | 1 | 9.68 | 9.58 | North |
| WeTPWtGmKlm0 | 2022-11-16 | qBX4pNzsfb | Books | 4 | 16.03 | 58.99 | North |
| upWDbRaFZSP0 | 2021-08-28 | Rgq1K0fHy2 | Home | 2 | 4.70 | 8.46 | West |
| i7luaBh5HoZR | 2021-10-06 | GkAq8otRi0 | Clothing | 7 | 17.24 | 85.68 | West |
| jTSJRFJuiFb6 | 2023-01-14 | tslbaGaeXu | Home | 1 | 9.27 | 8.44 | South |
| zDRrX19WoQN2 | 2024-07-07 | FsYmNZlL8t | Electronics | 2 | 17.03 | 27.59 | North |
| YhpRwLOwMAaO | 2020-09-06 | 70w8QKuYqo | Home | 2 | 9.99 | 18.78 | East |
| smX3ZDmWlbr4 | 2020-06-17 | DTAAG01bcn | Books | 4 | 9.94 | 38.57 | West |
| 1w7S74e55oPx | 2022-06-25 | Ic4sCAt6sb | Electronics | 1 | 14.76 | 12.99 | North |
| fCyXPsUMaPH8 | 2022-01-01 | s2Ftw0Bjkn | Electronics | 5 | 16.99 | 69.66 | South |
| 0UvxMxE9cjGv | 2021-07-03 | Q7vckx31vC | Groceries | 1 | 11.37 | 9.44 | West |
| oiKAnmP6Adlr | 2023-10-17 | MuFNMK6tJi | Books | 1 | 14.76 | 13.14 | East |
| zM9GK87awuYN | 2021-04-01 | 6XvVTr096a | Clothing | 7 | 12.80 | 70.78 | East |
| 0w0MpZcN1i7k | 2022-07-07 | NW0N1B2NpM | Home | 1 | 11.83 | 9.82 | North |
| eWWC1tlAKZt2 | 2020-04-24 | bDPt4mJX7k | Home | 3 | 17.69 | 38.74 | East |
| fnsF1YlsqyhM | 2024-12-07 | XghdQtcIrq | Groceries | 3 | 7.15 | 19.73 | East |
| 8kTs16HnE2dV | 2022-01-01 | Vi90y4aLJu | Home | 2 | 19.14 | 29.86 | North |
| zGdgK6oqmzbM | 2023-05-21 | RpbkRHFWkU | Books | 3 | 14.76 | 38.08 | South |
| Fti0kkcFymzu | 2023-08-08 | SQG81NH8ep | Electronics | 2 | 18.11 | 30.79 | West |
| 95eN6qIoKDRW | 2023-12-20 | jI6Yvp8kG7 | Groceries | 2 | 20.94 | 31.41 | South |
| x0COhVmxajiS | 2023-05-22 | Z0fOUlHR2X | Home | 0 | 20.18 | 0.00 | West |
| FqKcFn0IjoLk | 2022-09-11 | 9bbLdIbFTW | Clothing | 2 | 10.70 | 20.97 | North |
| QpkRWqS7I9wK | 2021-03-13 | UrXmzMVh9F | Groceries | 2 | 19.82 | 37.26 | North |
| YtXpppeJBsLU | 2021-09-16 | rcv5nDSj3X | Books | 4 | 3.89 | 15.09 | South |
| DD2CQXiyIjfP | 2021-06-25 | mgso709AFz | Groceries | 0 | 16.32 | 0.00 | North |
| mLSBJ1EbO2wv | 2021-11-29 | B0UJ1TY8MR | Groceries | 3 | 9.44 | 24.64 | West |
| XRJXKTWqYhuR | 2024-02-01 | ud8ZyqQyXO | Clothing | 2 | 8.41 | 12.95 | West |
| KvpqGYa8Mtql | 2022-07-05 | CV2H3fXzUW | Home | 6 | 4.67 | 27.18 | East |
| uMwak4JnR2cl | 2022-08-23 | tDSatCxFbt | Books | 5 | 15.23 | 74.63 | South |
| 1Svd8CKfuoeL | 2024-05-01 | ppLz34QlQF | Books | 1 | 29.12 | 24.75 | South |
| gJEV3FDJgylN | 2023-02-02 | 76SXvVKhxO | Home | 3 | 17.37 | 43.25 | South |
| W6L0eFGFhL87 | 2023-05-10 | 9k5H4PdDOz | Home | 2 | 21.65 | 30.31 | East |
| yg00vnFYtu4j | 2020-03-28 | YypDuhJTwk | Home | 2 | 14.19 | 22.14 | West |
| MwaY9eI4gQh3 | 2023-10-25 | RWM95O96S3 | Clothing | 3 | 12.73 | 34.37 | West |
| 6r9Ua0vflc3k | 2021-01-25 | aYAlretn1e | Home | 4 | 16.77 | 61.04 | West |
| Ez2cmtBQULjj | 2021-02-01 | Etl1pbZzSi | Groceries | 4 | 13.76 | 50.09 | South |
| RoCDXt5CzK0Z | 2020-09-24 | W5f2ZszYEp | Groceries | 1 | 11.03 | 8.38 | North |
| zZiaHKbETQzM | 2024-09-12 | FRk2ryXIWr | Clothing | 6 | 23.01 | 138.06 | South |
| zbmWOlYHDPAv | 2022-03-29 | R7t4L5NmsP | Books | 4 | 17.74 | 54.64 | South |
| Ndw7JjbWt8fA | 2024-03-25 | soN3M6wZuq | Groceries | 5 | 14.87 | 59.48 | West |
| haFdYTATDL7r | 2023-02-18 | smEs5opnYI | Electronics | 1 | 17.98 | 16.00 | East |
| Kod2S5AdA957 | 2024-06-12 | tV6JyHNVRT | Home | 2 | 13.54 | 26.54 | North |
| eabT4Y2CTCKX | 2020-02-06 | bpFHZ2GJar | Electronics | 4 | 13.15 | 37.35 | North |
| 7VqUTCUcjWft | 2021-12-06 | BTDqmbzeOk | Clothing | 4 | 9.84 | 33.85 | East |
| NJ7psA2bu9Ip | 2020-06-11 | FepMOBkW32 | Clothing | 0 | 12.26 | 0.00 | East |
| yfPNIRWduh2t | 2023-12-12 | hwyOant0XM | Home | 8 | 17.84 | 117.03 | North |
| NLcGYzXBNc7r | 2024-12-23 | pxLfKCfXgh | Home | 3 | 16.65 | 35.96 | West |
| z04tpn8J1KYY | 2020-02-15 | tlp9E6NbQX | Electronics | 2 | 12.33 | 24.41 | West |
| yzjp3EFHEI7i | 2023-08-03 | j34LqdVXYG | Home | 2 | 18.87 | 32.08 | North |
| qzzR4dnb8yr5 | 2022-05-08 | leTiEXEkHE | Clothing | 2 | 12.85 | 18.25 | West |
| aLOklBzAvzQa | 2024-01-27 | bV4r6doLDP | Home | 4 | 23.86 | 80.17 | South |
| mC8efJp6fhHx | 2022-05-17 | KPzqL4Lshr | Clothing | 4 | 20.96 | 80.49 | West |
| TyH8f0NwPiG9 | 2021-01-10 | nNmjzMyntA | Groceries | 5 | 8.69 | 32.15 | North |
| rAd7AbbdIaXP | 2022-03-31 | 6zOR135Ja5 | Clothing | 8 | 10.11 | 61.47 | South |
| yP9aad47jw44 | 2020-10-06 | gt90LIwFV8 | Electronics | 1 | 12.57 | 10.06 | West |
| 26i4Ey1h5UrD | 2022-07-22 | shgcNBD5gJ | Groceries | 0 | 9.43 | 0.00 | North |
| ZUaKowZf04V6 | 2022-01-25 | GNSycZTmAe | Groceries | 3 | 11.75 | 27.14 | South |
| 5mAA3ZdIzPgY | 2022-09-07 | 8HcWj2cPhp | Electronics | 1 | 18.01 | 17.65 | West |
| yqPWIXmn6X5W | 2023-11-28 | 80OKlJvWBA | Electronics | 4 | 13.13 | 44.12 | West |
| 0T0NKxYDMF11 | 2021-12-15 | 39Xtdtoxv0 | Books | 3 | 2.36 | 6.73 | South |
| 75DFolcOCS3M | 2023-06-02 | Tu5P3P3YUB | Groceries | 0 | 19.32 | 0.00 | North |
| QC2RFSNrtiob | 2023-11-03 | eXG2uCixPS | Books | 2 | 7.99 | 13.58 | North |
| aHP4Jhj55DMS | 2020-07-24 | kOfcMTgPtT | Clothing | 3 | 3.23 | 7.66 | South |
| tvCu3JVwczxP | 2023-10-03 | ntjmISZs9c | Books | 5 | 0.91 | 4.00 | South |
| BaIWtsO2cJgN | 2024-12-29 | dTKFClBjWn | Groceries | 4 | 22.16 | 82.44 | South |
| ttoiTA6NTwlI | 2021-08-27 | P5BhW3xBxZ | Clothing | 2 | 13.26 | 22.01 | North |
| takx3dYY78Jg | 2023-08-17 | EJFaWDM0xh | Home | 7 | 18.31 | 89.72 | West |
| 8txZQPyF2QDq | 2023-10-13 | gqiyizNYn6 | Groceries | 6 | 20.22 | 90.99 | North |
| mYIuyoFK0GSb | 2022-07-06 | 5UUjuE2k99 | Electronics | 2 | 13.79 | 20.41 | East |
| LfR7CBFWD1LO | 2021-11-14 | 8FltUwOrl5 | Clothing | 1 | 6.47 | 6.21 | North |
| 7prBBItt4LnE | 2022-02-03 | 2ppBJkeCqI | Clothing | 5 | 16.82 | 82.42 | East |
| G6YkmMBcaNTV | 2021-10-08 | FZxSQAnS3g | Groceries | 2 | 18.52 | 36.30 | East |
| 8ii604wKsFQr | 2024-12-01 | BnSypqX84g | Home | 3 | 10.50 | 22.36 | North |
| KUd3J4QNaySP | 2020-06-07 | icaeqmSpzk | Books | 3 | 6.97 | 19.03 | West |
| xCMRBC7mHFA7 | 2022-07-16 | 8kj9w0Kmjl | Groceries | 3 | 12.54 | 31.22 | West |
| pLbHSWVjBZzk | 2022-09-04 | dLLSxFOgD8 | Clothing | 6 | 7.55 | 44.39 | South |
| nDmBZOYXkJfM | 2022-07-23 | 1KoV6jicfm | Clothing | 5 | 17.47 | 71.63 | South |
| mkKltl4dxsSj | 2021-10-14 | 0yYHXOmDBC | Electronics | 1 | 9.00 | 7.92 | West |
| aNTtCLJbvRy5 | 2023-11-02 | tzqSz2vLCh | Groceries | 1 | 22.28 | 18.49 | East |
| 9cd3IsXgdcIQ | 2024-04-14 | WSIx4R1xUr | Home | 3 | 18.27 | 44.40 | North |
| cFxt8VLxccey | 2022-12-13 | 7hdZnftsOh | Books | 1 | 17.64 | 15.70 | South |
| WZdAQuZuTHoW | 2021-05-28 | rAsGeQIjpQ | Clothing | 3 | 19.81 | 55.27 | East |
| lAUQu2Zqipa4 | 2021-06-23 | 1PuDtRS0bd | Clothing | 1 | 13.33 | 10.40 | North |
| GQlX1IASjStb | 2021-01-21 | 2dFvKjyu49 | Home | 2 | 17.38 | 32.33 | North |
| 49sL5GHM5EQa | 2022-07-17 | AQbXbBP6WO | Books | 5 | 15.05 | 72.99 | West |
| W7edKjU2cvAp | 2024-07-04 | mWNzrBmtxd | Home | 5 | 10.44 | 52.20 | East |
| Evua0zpnrauU | 2022-09-15 | Ot9Sa8oyun | Electronics | 1 | 14.11 | 12.42 | East |
| L8niaWGwijdD | 2023-05-20 | yE1ULdubAT | Home | 3 | 19.59 | 49.95 | West |
| LBKsOfgJTG52 | 2022-01-16 | MA6zCZEiCr | Groceries | 5 | 16.45 | 59.22 | East |
| cfMdmw7x17JO | 2023-07-12 | i91DUJv05e | Books | 3 | 15.13 | 41.30 | North |
| GBkY1u8RReEz | 2023-03-07 | gd7zNOZlpP | Clothing | 3 | 9.91 | 25.57 | North |
| QF7TC7B428ew | 2024-09-30 | aMEmmN3cl8 | Home | 3 | 21.23 | 49.68 | West |
| IAHtrikcFVoX | 2021-09-18 | AG7VXb1JFD | Clothing | 5 | 7.42 | 27.45 | South |
| LkKeZ6YWSoOX | 2024-06-05 | CW8zZLXGhD | Electronics | 5 | 11.74 | 48.72 | North |
| ebqMLwv2CFyv | 2023-12-03 | xgRoy12D2V | Home | 3 | 18.97 | 43.82 | North |
| nBMo1yLCMbvv | 2021-09-11 | 9YOYS3wRK0 | Electronics | 6 | 5.84 | 25.23 | South |
| eY2mb0Az22oM | 2020-07-20 | qlZhogrl2S | Clothing | 4 | 11.22 | 44.88 | West |
| j7LkvsNx29oy | 2020-03-13 | jSKuJ38fM0 | Books | 3 | 10.01 | 30.03 | East |
| FcYFBo5sf5B5 | 2024-08-09 | 5rC4VVOgla | Clothing | 4 | 11.36 | 34.99 | South |
| IYlg0MAGwsUw | 2020-11-30 | 04npfK5VJa | Books | 3 | 15.90 | 36.25 | North |
| 2RTqWHDLFlUZ | 2022-12-05 | MxT08Z7exz | Books | 5 | 11.04 | 41.40 | North |
| nWC6lX1EyCmw | 2023-06-24 | ATC7Vuq4At | Home | 2 | 22.00 | 39.60 | West |
| G7SI61ABcF1p | 2020-05-10 | b1s4YdP4dw | Electronics | 4 | 7.62 | 25.60 | North |
| kKnsYxDNjUQJ | 2023-03-19 | X79qcSBayq | Electronics | 3 | 13.12 | 37.79 | East |
| xqgQy9GQsfp3 | 2022-12-20 | B5wkf9iAVY | Clothing | 3 | 13.84 | 38.20 | North |
| jhxqsLrPu6EG | 2022-11-09 | 5YUDP4zMeL | Home | 4 | 12.21 | 44.93 | West |
| krtU1Rt38m4V | 2021-11-12 | SzWfyr3rSn | Electronics | 2 | 10.22 | 18.80 | South |
| SR2BD4n1XNt8 | 2023-10-09 | YebduFEo1l | Clothing | 6 | 11.61 | 60.60 | South |
| bU2N7nYUKgo1 | 2022-09-09 | I1DC12ZrYS | Home | 4 | 7.94 | 30.17 | West |
| Ya8gIgqWA24P | 2021-06-12 | Aiz3vYGyu8 | Clothing | 3 | 15.07 | 42.05 | West |
| i0ZFDYTmYdDF | 2020-03-22 | 7hYpz2phLg | Electronics | 5 | 5.97 | 21.19 | South |
| ddFsMFlQOa2J | 2023-05-19 | 0PlvCaxPuS | Electronics | 3 | 9.12 | 21.89 | East |
| OM2qIrGKztg4 | 2023-04-12 | d8vj3KzXwg | Books | 1 | 13.46 | 11.44 | West |
| f8ZXIQ0ZxLI3 | 2020-09-29 | tVg4CmJILD | Electronics | 7 | 6.00 | 41.58 | South |
| CeGOrslvuNbu | 2020-04-03 | uL1CNhii2S | Groceries | 2 | -0.96 | -1.57 | West |
| SvO13nb3MdLJ | 2020-11-25 | IOwdZ7rIT7 | Home | 3 | 8.55 | 21.80 | North |
| qQsozRg3StB6 | 2022-07-21 | oOiercVP9k | Home | 3 | 14.84 | 43.18 | North |
| UvxkPdx0P3a2 | 2023-12-23 | 56mvK1CdkB | Clothing | 4 | 17.47 | 56.60 | North |
| z1V34cFT9BXr | 2024-09-09 | ez782o4SvY | Clothing | 1 | 19.96 | 18.76 | South |
| HDeKwIA49yOw | 2020-06-27 | fbOph1Sl4i | Clothing | 5 | 5.00 | 17.50 | North |
| o2eNX1wfOYxI | 2023-01-02 | o3p35KviRK | Home | 5 | 14.37 | 52.45 | North |
| 42bEoss149GX | 2020-10-30 | DDz3Q52JXM | Groceries | 3 | 4.96 | 11.31 | North |
| 1rPGJ0pze8Nv | 2022-07-18 | jir3e9SkHn | Clothing | 1 | 10.82 | 10.60 | East |
| u9RZuEkTkQo4 | 2022-08-11 | jJFdoYL71G | Groceries | 3 | 7.95 | 23.37 | South |
| GR4Tnn5DByPk | 2021-04-17 | nuOBVAw2Qv | Books | 0 | 6.42 | 0.00 | East |
| iAj82paX24z2 | 2023-10-01 | aPYKwTNPDJ | Home | 2 | 19.15 | 37.15 | East |
| AmxWMrj7DrXF | 2022-04-08 | EL1f1KucTi | Clothing | 2 | 12.64 | 19.97 | East |
| jBw7GY376rYN | 2023-06-08 | WIa9s0OCQ0 | Groceries | 1 | 14.71 | 12.94 | West |
| bhOaWFN6KNz5 | 2023-10-21 | pprHps7zZH | Groceries | 3 | 24.65 | 53.98 | North |
| X5tczO5rRpU3 | 2023-02-13 | KDKcbZwV2p | Books | 5 | 15.71 | 63.63 | South |
| sqNtceZ5egGt | 2021-12-26 | CnUULLnaQw | Home | 6 | 9.31 | 53.07 | West |
| zJ7dNvfsfQ7x | 2022-10-07 | J0vZpE9K2D | Groceries | 1 | 17.74 | 13.48 | South |
| RR59oLBl8oUs | 2020-04-17 | a6zCJx578K | Electronics | 3 | 7.56 | 17.69 | West |
| 6saYHaGQ3Y0x | 2021-10-20 | 54Mqprcgqq | Books | 3 | 18.86 | 43.00 | East |
| r3xvtNSNYpdA | 2023-09-11 | s3ardvAdkq | Home | 3 | 14.11 | 36.83 | East |
| MmgZnZpJsmKo | 2024-11-06 | XDDmM2aTzU | Electronics | 3 | 14.92 | 38.94 | North |
| dHSO6mBkO2bY | 2021-08-23 | tTBWkVB3i2 | Groceries | 3 | 6.16 | 17.56 | West |
| t3nn6XjMBcoL | 2024-04-14 | 6443ZQoAAI | Clothing | 1 | 19.64 | 13.94 | North |
| An6iX3Ctrr9k | 2021-09-09 | pGt7kTrSXH | Clothing | 4 | 19.33 | 66.50 | South |
| hvpoMEf4HV7z | 2020-04-12 | xfpeaCHAZq | Home | 3 | 8.22 | 23.18 | West |
| 0hA4eQWX9iTO | 2022-01-24 | tykBFpCnhi | Books | 2 | 15.31 | 29.40 | West |
| 0wnhBVR7eZC0 | 2023-09-30 | AvuXTBZQ0Y | Books | 4 | 17.67 | 60.08 | North |
| vQcAfenkoFhA | 2023-07-05 | u4Mkn61Ghc | Home | 2 | 23.11 | 41.60 | West |
| zdGDw25AIiJa | 2023-11-17 | di3sZD6hBr | Electronics | 4 | 19.32 | 67.23 | South |
| B0X6kpCddAjl | 2023-04-22 | jfSVOZE51X | Electronics | 3 | 10.63 | 24.24 | North |
| XaDZ84C1h8xy | 2022-04-22 | eE0crPZ4XT | Home | 2 | 10.52 | 19.99 | East |
| HLvL9QHWTbKq | 2023-11-14 | JO12gVckL4 | Electronics | 4 | 12.27 | 43.68 | South |
| Zlnzqyms41Hw | 2024-12-27 | bRnpgBkegR | Books | 5 | 18.71 | 82.32 | North |
| Mbkn3EFlkxpa | 2020-07-15 | GUyFiledM7 | Books | 3 | 9.98 | 28.14 | North |
| cJxi0faTT19f | 2024-08-04 | 2JPKJu14mE | Electronics | 4 | 19.84 | 58.73 | East |
| HVactibZklAY | 2023-04-30 | TBurRzva7b | Electronics | 1 | 12.71 | 9.91 | South |
| KkU0YohTQsm0 | 2022-01-15 | 85N7rv4qxv | Home | 3 | 12.12 | 27.63 | East |
| bz5Vdw2fGncs | 2024-05-01 | iAioCqZjE6 | Groceries | 2 | 21.71 | 32.56 | East |
| 5ASjSZRCB0ii | 2023-05-01 | QONrntLnG8 | Groceries | 3 | 15.50 | 45.10 | South |
| lhLafICQVVmf | 2023-12-19 | UijSnEjeur | Clothing | 7 | 12.73 | 85.55 | North |
| bvYfukEnmLaO | 2022-12-08 | nH2Sv4pTIS | Clothing | 2 | 18.86 | 30.93 | East |
| EmTiLJkfet2a | 2021-04-04 | uD3UV4xVjk | Books | 4 | 12.07 | 44.42 | North |
| wY1nktEJrtem | 2022-11-11 | hj1H6bBAHS | Home | 2 | 9.42 | 15.07 | North |
| ukQt0UPHXbtS | 2024-11-27 | wzRsFhRut7 | Books | 2 | 26.55 | 41.42 | West |
| 7iOiK0v83Wr0 | 2024-11-05 | eKM50XlEMp | Books | 1 | 12.16 | 8.88 | North |
| sOS3nihhE1Fc | 2023-11-01 | b4RWPGfwao | Groceries | 6 | 7.09 | 41.26 | East |
| 1Gwzt9tVUcH6 | 2020-05-11 | VZx0AxgHdk | Clothing | 2 | -1.27 | -2.36 | South |
| 3bH1Bd5xcoJn | 2024-05-21 | Fn3JfTkvli | Home | 1 | 21.26 | 19.77 | North |
| f7Dby0zUvLSU | 2020-07-05 | azdHUHNJlV | Home | 4 | 7.34 | 23.78 | South |
| jJ445XKVxUPS | 2020-02-22 | fUy9OW66Jo | Books | 3 | 8.62 | 21.72 | North |
| oZT8M4ZIRRvo | 2022-07-22 | cXl8Xyescv | Groceries | 3 | 15.45 | 39.40 | West |
| 5aX2ULRHGolS | 2021-09-28 | ojymsdgXcy | Groceries | 3 | 9.67 | 27.56 | North |
| 4pmj04wvlLWt | 2022-12-18 | 9RjZ5KJNyT | Electronics | 4 | 5.96 | 23.36 | West |
| 0fSjEes73k3m | 2022-04-16 | JphihvKQG3 | Groceries | 2 | 4.25 | 7.39 | West |
| P9T9GsQnOxIa | 2021-11-12 | oXyTZNCsUB | Electronics | 1 | 10.30 | 9.06 | North |
| FyRCpwyOqKWK | 2021-12-02 | 0dEDsy4fWM | Groceries | 2 | 12.87 | 24.97 | West |
| 79oKvLQOQItf | 2023-11-28 | yK8aGlRhrV | Groceries | 3 | 4.61 | 11.89 | South |
| Zvz6Tf3Rred9 | 2023-03-31 | JlAqOxH3dU | Electronics | 3 | 17.45 | 48.69 | East |
| O26foEikb1wk | 2020-03-27 | RnP47ExaAd | Electronics | 3 | 12.11 | 29.43 | North |
| 8NazOChvfqSG | 2020-08-15 | 2AIX99u2SL | Electronics | 3 | 16.47 | 37.55 | South |
| 4QWHvX1YIAgh | 2024-05-11 | DJbRe9qSHB | Clothing | 2 | 18.82 | 26.72 | North |
| 8t9v98DTdHyW | 2024-08-10 | 6opiWjNbc4 | Books | 4 | 19.02 | 73.80 | East |
| iYCCHT8qEQFL | 2024-04-11 | T2JLIhQTM6 | Groceries | 5 | 21.02 | 76.72 | North |
| vijZ2fnltNPM | 2023-04-12 | YEqoAZrvfU | Home | 2 | 15.90 | 26.71 | East |
| u8d9jnNOvUWK | 2023-04-12 | BbMtrYuSbM | Books | 1 | 15.60 | 11.86 | North |
| OIglSNOBlCQd | 2020-01-03 | QT1h2Jjrb4 | Clothing | 3 | 10.58 | 27.93 | South |
| K2Ic54wJF6Lx | 2021-08-29 | oYwpsIKzpZ | Groceries | 3 | 15.72 | 42.92 | North |
| XkGb1ofuh3OC | 2021-12-03 | Ipmsv6W4n0 | Groceries | 5 | 9.84 | 46.74 | North |
| ImDJyfNfUWXx | 2021-02-05 | A2VNB7YuGI | Books | 2 | 9.50 | 16.53 | East |
| PVzRUj8Xc3rU | 2020-05-17 | MsJLNkDPFr | Clothing | 5 | 5.67 | 21.26 | West |
| 97xZbHQ1oJ4R | 2021-04-25 | OqsMtpUVjX | Groceries | 3 | 7.21 | 18.60 | East |
| vtHiBkIfV0Ab | 2022-02-05 | sSEDOOgxjm | Books | 5 | 15.63 | 67.21 | North |
| 0mY4nEP5edmT | 2024-06-07 | Pnb6X3Jz0F | Home | 6 | 25.74 | 123.55 | West |
| AqxQCkWJxba5 | 2022-03-31 | jukknhPUxW | Books | 4 | 9.16 | 32.61 | West |
| U57J7dIrKDxH | 2022-05-18 | n6tlW40fqp | Clothing | 4 | 13.06 | 50.15 | South |
| HI7qlkYIXNvq | 2021-10-30 | Fb9CKExv0r | Electronics | 3 | 6.85 | 18.70 | North |
| qesyPJQOSJCO | 2024-11-08 | GLtbK5tWtC | Books | 4 | 22.54 | 72.13 | South |
| 7xeOQ3V8swFD | 2021-12-08 | yyoj2A1d0y | Clothing | 4 | 10.41 | 33.31 | East |
| yAKhmI7wbQDs | 2024-02-07 | 7W0vMC681O | Clothing | 7 | 18.90 | 127.01 | North |
| ER66Ufm1QMO0 | 2022-06-23 | 6tIzPP6ava | Home | 1 | 15.74 | 12.43 | West |
| KkkwqU0fJWov | 2023-04-06 | QJoTkxo9S6 | Books | 2 | 10.73 | 15.02 | North |
| w3i0Rfjoa6hX | 2023-01-15 | VU7NlQ74hC | Clothing | 4 | 15.48 | 50.77 | North |
| gWv8dQLDqODX | 2021-05-10 | NR2BItfWF0 | Books | 2 | 10.86 | 18.90 | South |
| NH0dZkjh2bzu | 2020-08-05 | lq9xTX2WFJ | Clothing | 5 | 13.38 | 52.18 | East |
| A46eNvcTKJgP | 2020-11-27 | CDHnObcgGN | Books | 3 | 3.83 | 10.34 | East |
1.2 Categorical Data
1.2.1 Bar Chart
# Load libraries
library(dplyr)
library(ggplot2)
library(viridis)
library(scales)
# Step 1: Siapkan dan ringkas data
data_bisnis <- read.csv("data_dv.csv")
sales_summary <- data_bisnis %>%
group_by(Product_Category) %>%
summarise(Total_Sales = sum(Total_Price, na.rm = TRUE)) %>%
arrange(desc(Total_Sales))
# Step 2: Palet warna turbo dari viridis
custom_colors <- viridis::turbo(n = nrow(sales_summary))
# Step 3: Plot bar chart clean dan putih
ggplot(sales_summary, aes(x = reorder(Product_Category, -Total_Sales),
y = Total_Sales,
fill = Product_Category)) +
geom_col(show.legend = FALSE) +
geom_text(aes(label = label_comma(prefix = "Rp ")(Total_Sales)),
vjust = -0.5, size = 5) +
scale_fill_manual(values = custom_colors) +
scale_y_continuous(labels = label_comma(prefix = "Rp "),
expand = expansion(mult = c(0, 0.1))) +
labs(
title = "Total Sales by Product Category (2020–2024)",
subtitle = "Based on Transaction Value",
x = "Product Category",
y = "Total Sales",
caption = "@azkyaaa"
) +
theme_minimal(base_size = 18) # Tema putih dan bersih1.2.2 Pie Chart
# Load necessary libraries
library(dplyr)
library(ggplot2)
library(viridis)
library(scales)
# Step 1: Summarize total sales by product category
data_bisnis <- read.csv("data_dv.csv")
sales_summary <- data_bisnis %>%
group_by(Product_Category) %>%
summarise(Total_Sales = sum(Total_Price, na.rm = TRUE)) %>%
arrange(desc(Total_Sales)) %>%
mutate(
Percentage = Total_Sales / sum(Total_Sales),
Label = paste0(Product_Category, "\n", percent(Percentage, accuracy = 1))
)
# Step 2: Create custom color palette
custom_colors <- viridis::turbo(n = nrow(sales_summary))
# Step 3: Plot donut chart
ggplot(sales_summary, aes(x = 2, y = Percentage, fill = Product_Category)) +
geom_col(width = 1, color = "white", show.legend = FALSE) +
coord_polar(theta = "y") +
geom_text(
aes(label = Label),
position = position_stack(vjust = 0.5),
size = 4.5, # Ukuran teks label disesuaikan agar tidak besar
color = "white", fontface = "bold"
) +
scale_fill_manual(values = custom_colors) +
xlim(0.5, 2.5) +
labs(
title = "Sales Distribution by Product Category (2020–2024)",
subtitle = "Based on Total Transaction Value",
caption = "@azkyaaa"
) +
theme_void(base_size = 14) + # Ukuran font dasar lebih normal dan rapi
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
plot.subtitle = element_text(margin = margin(t = 5, b = 10), hjust = 0.5),
plot.caption = element_text(margin = margin(t = 10), hjust = 1,
color = "gray30", face = "italic")
)1.2.3 Treemap
# ==============================
# 1. Install & Load Required Packages
# ==============================
packages <- c("treemapify", "dplyr", "ggplot2")
new_packages <- packages[!(packages %in% installed.packages()[, "Package"])]
if(length(new_packages)) install.packages(new_packages)
# Load libraries
library(treemapify)
library(ggplot2)
library(dplyr)
# ==============================
# 2. Prepare Aggregated Treemap Data
# ==============================
data_bisnis <- read.csv("data_dv.csv")
tree_data <- data_bisnis %>%
group_by(Product_Category, Region) %>%
summarise(
Total_Sales = sum(Total_Price, na.rm = TRUE),
.groups = "drop"
) %>%
mutate(
label_combined = paste0(Region, "\n", round(Total_Sales, 0))
)
# ==============================
# 3. Create Static Tree Map with Combined Labels
# ==============================
ggplot(tree_data, aes(
area = Total_Sales,
fill = Product_Category,
subgroup = Product_Category
)) +
geom_treemap() +
geom_treemap_subgroup_border(color = "white") +
geom_treemap_text(
aes(label = label_combined),
colour = "white",
place = "centre",
grow = FALSE,
reflow = TRUE,
size = 50 / .pt, # Adjust overall font size
min.size = 3
) +
labs(
title = "Tree Map of Total Sales by Product Category and Region"
) +
theme_minimal()1.3 Numerical Data
1.3.1 Histogram
library(ggplot2)
library(dplyr)
data_bisnis <- read.csv("data_dv.csv")
data_bisnis <- data_bisnis %>%
mutate(Quantity = as.numeric(Quantity))
ggplot(data_bisnis, aes(x = Quantity)) +
geom_histogram(binwidth = 1,
fill = "skyblue",
color = "gray",
alpha = 0.7) +
labs(
title = "Histogram of Quantity Distribution",
x = "Quantity",
y = "Frequency"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 18, face = "bold"), # title diperkecil
axis.title.x = element_text(size = 14), # label x diperkecil
axis.title.y = element_text(size = 14), # label y diperkecil
axis.text.x = element_text(size = 12), # angka x diperkecil
axis.text.y = element_text(size = 12) # angka y diperkecil
)1.3.2 Density Plot
library(ggplot2)
library(dplyr)
data_bisnis <- read.csv("data_dv.csv")
data_bisnis <- data_bisnis %>%
mutate(Quantity = as.numeric(Quantity)) %>%
filter(!is.na(Quantity))
mean_quantity <- mean(data_bisnis$Quantity, na.rm = TRUE)
density_data <- density(data_bisnis$Quantity)
max_y <- max(density_data$y)
ggplot(data_bisnis, aes(x = Quantity)) +
geom_density(fill = "skyblue", alpha = 0.6) +
geom_vline(xintercept = mean_quantity, color = "red",
linetype = "dashed", linewidth = 0.7) + # garis lebih tipis
geom_text(
data = data.frame(x = mean_quantity, y = max_y * 0.8),
aes(x = x, y = y),
label = paste("Mean =", round(mean_quantity, 2)),
color = "black",
angle = 90,
vjust = -0.5,
size = 5, # font lebih kecil
fontface = "bold",
inherit.aes = FALSE
) +
labs(
title = "Density Plot of Quantity with Mean",
x = "Quantity",
y = "Density"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 22, face = "bold"), # title lebih kecil
axis.title = element_text(size = 16),
axis.text = element_text(size = 12)
)1.3.3 Bloxplot
library(ggplot2)
library(dplyr)
data_bisnis <- read.csv("data_dv.csv", stringsAsFactors = FALSE)
data_bisnis <- data_bisnis %>%
mutate(Quantity = as.numeric(Quantity)) %>%
filter(!is.na(Quantity))
Q1 <- quantile(data_bisnis$Quantity, 0.25)
Q3 <- quantile(data_bisnis$Quantity, 0.75)
IQR_value <- IQR(data_bisnis$Quantity)
lower_whisker <- Q1 - 1.5 * IQR_value
upper_whisker <- Q3 + 1.5 * IQR_value
stats <- data_bisnis %>%
summarise(
Mean = mean(Quantity),
Q1 = Q1,
Median = median(Quantity),
Q3 = Q3,
Min = min(Quantity),
Max = max(Quantity),
Outliers = sum(Quantity < lower_whisker | Quantity > upper_whisker)
)
ggplot(data_bisnis, aes(x = factor(1), y = Quantity)) +
geom_boxplot(fill = "skyblue", outlier.shape = NA) +
geom_jitter(aes(color = Quantity < lower_whisker | Quantity > upper_whisker),
width = 0.1, size = 2, alpha = 0.5) +
scale_color_manual(values = c("FALSE" = "black", "TRUE" = "red"), guide = "none") +
geom_point(data = data_bisnis %>% filter(Quantity == stats$Max[[1]] & Quantity <= upper_whisker),
aes(x = factor(1), y = Quantity),
color = "red", size = 6) + # ukuran titik max diperkecil
annotate("text", x = 1.2, y = stats$Mean[[1]],
label = paste("Mean:", round(stats$Mean[[1]], 2)),
hjust = 0, fontface = "bold", color = "blue", size = 5) +
annotate("text", x = 1.2, y = stats$Q1[[1]],
label = paste("Q1:", round(stats$Q1[[1]], 2)),
hjust = 0, color = "darkgreen", size = 4.5) +
annotate("text", x = 1.2, y = stats$Median[[1]],
label = paste("Median:", round(stats$Median[[1]], 2)),
hjust = 0, color = "purple", size = 4.5) +
annotate("text", x = 1.2, y = stats$Q3[[1]],
label = paste("Q3:", round(stats$Q3[[1]], 2)),
hjust = 0, color = "darkgreen", size = 4.5) +
annotate("text", x = 1.2, y = stats$Min[[1]],
label = paste("Min:", round(stats$Min[[1]], 2)),
hjust = 0, color = "orange", size = 4.5) +
annotate("text", x = 1.2, y = stats$Max[[1]],
label = paste("Max:", round(stats$Max[[1]], 2)),
hjust = 0, color = "orange", size = 4.5) +
annotate("text", x = 1, y = stats$Max[[1]] + 0.05 * stats$Max[[1]],
label = paste("Outliers:", stats$Outliers[[1]]),
color = "red", fontface = "italic", hjust = 0.5, size = 5) +
labs(
title = "Boxplot of Quantity with Jitter",
x = NULL,
y = "Quantity"
) +
theme_minimal() +
theme(
axis.text.x = element_blank(),
axis.ticks.x = element_blank(),
plot.title = element_text(size = 28, face = "bold"),
axis.title = element_text(size = 18),
axis.text = element_text(size = 14)
)1.3.4 Violin Plot
# =================================
# 1. Load Required Libraries
# =================================
library(ggplot2)
library(dplyr)
# =================================
# 2. Load and Prepare Data
# =================================
# Buat dummy df jika df belum ada (untuk testing saat knit)
if (!exists("df") || !is.data.frame(df)) {
set.seed(123)
df <- data.frame(
Quantity = c(rpois(95, lambda = 20), 150, 160, 170, 5, 2)
)
}
data_bisnis <- df
data_bisnis <- data_bisnis %>%
mutate(Quantity = as.numeric(Quantity)) %>%
filter(!is.na(Quantity))
# Hitung statistik dasar
Q1 <- quantile(data_bisnis$Quantity, 0.25)
Q3 <- quantile(data_bisnis$Quantity, 0.75)
IQR_val <- Q3 - Q1
lower_whisker <- Q1 - 1.5 * IQR_val
upper_whisker <- Q3 + 1.5 * IQR_val
mean_val <- mean(data_bisnis$Quantity)
median_val <- median(data_bisnis$Quantity)
min_val <- min(data_bisnis$Quantity)
max_val <- max(data_bisnis$Quantity)
# Tandai outlier
data_bisnis <- data_bisnis %>%
mutate(is_outlier = ifelse(Quantity < lower_whisker | Quantity > upper_whisker, "Outlier", "Normal"),
x_group = ifelse(is_outlier == "Outlier", "Outlier Only", "All Data"))
outliers_count <- sum(data_bisnis$is_outlier == "Outlier")
# =================================
# 3. Create the Plot
# =================================
x_offset <- 2.2
y_range <- max_val - min_val
y_offset <- 0.02 * y_range
p <- ggplot(data_bisnis, aes(x = x_group, y = Quantity)) +
geom_violin(fill = "skyblue", alpha = 0.6, adjust = 1.5, scale = "width", width = 0.9) +
geom_boxplot(width = 0.15, outlier.shape = NA, fill = NA, color = "black") +
geom_jitter(aes(color = is_outlier), width = 0.15, size = 2, alpha = 0.6) +
geom_point(data = data_bisnis %>% filter(Quantity == max_val & is_outlier == "Normal"),
aes(x = x_group, y = Quantity), color = "red", size = 5) +
annotate("text", x = x_offset, y = Q3 + y_offset*2, label = paste0("Q3: ", round(Q3, 2)), color = "darkgreen", size = 4) +
annotate("text", x = x_offset, y = mean_val + y_offset*4, label = paste0("Mean: ", round(mean_val, 2)), color = "blue", fontface = "bold", size = 4.2) +
annotate("text", x = x_offset, y = median_val + y_offset*3, label = paste0("Median: ", round(median_val, 2)), color = "purple", size = 4) +
annotate("text", x = x_offset, y = Q1 + y_offset, label = paste0("Q1: ", round(Q1, 2)), color = "darkgreen", size = 4) +
annotate("text", x = x_offset, y = max_val, label = paste0("Max: ", round(max_val, 2)), color = "orange", size = 4) +
annotate("text", x = x_offset, y = min_val, label = paste0("Min: ", round(min_val, 2)), color = "orange", size = 4) +
annotate("text", x = "All Data", y = max_val + y_offset * 6,
label = paste0("Outliers: ", outliers_count),
color = "red", fontface = "italic", size = 4.5, hjust = 0.5) +
scale_color_manual(values = c("Normal" = "black", "Outlier" = "red")) +
labs(title = "Violin Plot of Quantity with Outliers", y = "Quantity", x = NULL, color = NULL) +
theme_minimal() +
theme(
plot.title = element_text(size = 16, face = "bold"),
axis.title.x = element_blank(),
axis.text.x = element_text(size = 12),
axis.text.y = element_text(size = 12),
axis.title.y = element_text(size = 14),
legend.position = "none"
)
print(p)1.4 Combo
1.4.1 Grouped Bar Chart
# ==============================
# 1. Load Required Libraries
# ==============================
library(dplyr)
library(ggplot2)
# ==============================
# 2. Load and Prepare Data
# ==============================
# Cek apakah df ada dan valid
if (!exists("df") || !is.data.frame(df) || !"Total_Price" %in% names(df)) {
# Buat dummy data untuk mencegah knit error
set.seed(123)
df <- data.frame(
Product_Category = rep(c("A", "B", "C"), each = 3),
Region = rep(c("North", "South", "West"), times = 3),
Total_Price = runif(9, min = 10000, max = 50000)
)
}
# Proses data
data_bisnis <- df %>%
mutate(Total_Price = as.numeric(Total_Price)) %>%
filter(!is.na(Total_Price))
# ==============================
# 3. Group and Summarize
# ==============================
sales_summary <- data_bisnis %>%
group_by(Product_Category, Region) %>%
summarise(Total_Sales = sum(Total_Price, na.rm = TRUE), .groups = "drop")
# ==============================
# 4. Plot Grouped Bar Chart
# ==============================
ggplot(sales_summary, aes(x = Product_Category, y = Total_Sales, fill = Region)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.8)) +
labs(
title = "Total Sales by Product Category and Region",
x = "Product Category",
y = "Total Sales (USD)",
fill = "Region"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(size = 24, face = "bold"),
axis.title.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text.x = element_text(angle = 45, hjust = 1, size = 14),
axis.text.y = element_text(size = 14),
legend.title = element_text(size = 16),
legend.text = element_text(size = 14)
)1.4.2 Ridgeline Plot
# ==============================
# 1. Load Required Libraries
# ==============================
library(dplyr)
library(ggplot2)
library(ggridges)
library(scales)
library(viridis)
# ==============================
# 2. Load or Simulate Data
# ==============================
# Cegah error knit: buat data dummy jika df belum ada atau kolom tidak lengkap
if (!exists("df") || !"Price_per_Unit" %in% names(df) || !"Region" %in% names(df)) {
set.seed(123)
df <- data.frame(
Region = rep(c("North", "South", "East", "West"), each = 100),
Price_per_Unit = c(
rnorm(100, mean = 20000, sd = 5000),
rnorm(100, mean = 25000, sd = 6000),
rnorm(100, mean = 30000, sd = 7000),
rnorm(100, mean = 18000, sd = 4000)
)
)
}
# ==============================
# 3. Filter Valid Data
# ==============================
data_bisnis <- df %>%
filter(is.finite(Price_per_Unit))
# ==============================
# 4. Plot Ridgeline (Joyplot)
# ==============================
ggplot(data_bisnis, aes(x = Price_per_Unit, y = Region, fill = Region)) +
geom_density_ridges(
alpha = 0.7,
scale = 1.2,
size = 1.2,
color = "black",
rel_min_height = 0.01 # mirip joypy fade
) +
scale_x_continuous(
labels = label_number(
prefix = "Rp", big.mark = ".", decimal.mark = ",", accuracy = 1
)
) +
scale_fill_viridis_d(option = "D") +
labs(
title = "Distribution of Price per Unit by Region",
x = "Price per Unit",
y = "Region"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(size = 24, face = "bold"),
axis.title.x = element_text(size = 18),
axis.title.y = element_text(size = 18),
axis.text.x = element_text(size = 14),
axis.text.y = element_text(size = 14),
legend.position = "none",
panel.grid.major = element_line(color = "gray90"),
panel.grid.minor = element_blank()
)1.4.3 Bloxplot by Category
# ==============================
# 1. Load Libraries
# ==============================
library(ggplot2)
library(dplyr)
library(readr)
library(RColorBrewer)
# ==============================
# 2. Prepare Data
# ==============================
data_bisnis <- read_csv("data_dv.csv")
data_bisnis <- data_bisnis %>%
mutate(Quantity = as.numeric(Quantity)) %>%
filter(!is.na(Quantity))
# ==============================
# 3. Create Boxplot with Adjusted Font Sizes
# ==============================
ggplot(data_bisnis, aes(x = Product_Category, y = Quantity, fill = Product_Category)) +
geom_boxplot(
outlier.color = "red",
outlier.shape = 16,
outlier.size = 3
) +
scale_fill_brewer(palette = "Pastel1") +
labs(
title = "Boxplot of Quantity by Product Category",
x = "Product Category",
y = "Quantity"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 24, face = "bold"),
axis.title.x = element_text(size = 20),
axis.title.y = element_text(size = 20),
axis.text.x = element_text(size = 16, angle = 45, hjust = 1),
axis.text.y = element_text(size = 16),
legend.position = "none"
)1.4.4 Lollipop Chart
# ==============================
# 1. Load Required Libraries
# ==============================
library(dplyr)
library(ggplot2)
library(scales)
# ==============================
# 2. Load or Simulate Data
# ==============================
if (!exists("df") || !"Total_Price" %in% names(df) || !"Product_Category" %in% names(df) || !"Region" %in% names(df)) {
set.seed(123)
df <- data.frame(
Product_Category = rep(c("A", "B", "C", "D"), each = 4),
Region = rep(c("North", "South", "East", "West"), times = 4),
Total_Price = runif(16, min = 50000, max = 200000)
)
}
# ==============================
# 3. Prepare Data
# ==============================
data_bisnis <- df %>%
mutate(Total_Price = as.numeric(Total_Price)) %>%
filter(!is.na(Total_Price))
# ==============================
# 4. Summarize Total Sales
# ==============================
sales_grouped <- data_bisnis %>%
group_by(Product_Category, Region) %>%
summarise(Total_Sales = sum(Total_Price), .groups = 'drop')
# Sort Product_Category by total sales
order <- sales_grouped %>%
group_by(Product_Category) %>%
summarise(Sum_Total = sum(Total_Sales)) %>%
arrange(Sum_Total) %>%
pull(Product_Category)
sales_grouped$Product_Category <- factor(sales_grouped$Product_Category, levels = order)
# ==============================
# 5. Grouped Lollipop Chart
# ==============================
ggplot(sales_grouped, aes(x = Total_Sales, y = Product_Category, color = Region)) +
geom_segment(aes(x = 0, xend = Total_Sales, y = Product_Category, yend = Product_Category),
size = 1.8, alpha = 0.7) +
geom_point(size = 6) +
labs(
title = "Grouped Lollipop Chart",
x = "Total Sales",
y = "Product Category",
color = "Region"
) +
scale_x_continuous(labels = label_number(big.mark = ".", decimal.mark = ",")) +
theme_minimal(base_size = 16) +
theme(
plot.title = element_text(size = 24, face = "bold"),
axis.title.x = element_text(size = 20),
axis.title.y = element_text(size = 20),
axis.text.x = element_text(size = 16),
axis.text.y = element_text(size = 16),
legend.title = element_text(size = 18),
legend.text = element_text(size = 16),
panel.grid.major.y = element_blank(),
panel.grid.minor.y = element_blank(),
panel.grid.major.x = element_line(color = "gray80", linetype = "dashed")
)1.4.5 Heatmap
# ==============================
# 1. Load Required Libraries
# ==============================
library(ggplot2)
library(dplyr)
library(reshape2)
library(scales)
# ==============================
# 2. Prepare Data
# ==============================
data_bisnis <- read.csv("data_dv.csv", stringsAsFactors = FALSE)
# Konversi Total_Price ke numerik dan buang NA
data_bisnis <- data_bisnis %>%
mutate(Total_Price = as.numeric(Total_Price)) %>%
filter(!is.na(Total_Price), !is.na(Product_Category), !is.na(Region))
# ==============================
# 3. Create Aggregated Matrix
# ==============================
sales_matrix <- data_bisnis %>%
group_by(Product_Category, Region) %>%
summarise(Total_Sales = sum(Total_Price, na.rm = TRUE), .groups = "drop") %>%
dcast(Product_Category ~ Region, value.var = "Total_Sales", fill = 0)
# Set rownames dan ubah ke matrix untuk heatmap plotting
rownames(sales_matrix) <- sales_matrix$Product_Category
sales_matrix <- as.matrix(sales_matrix[, -1])
# ==============================
# 4. Create Heatmap
# ==============================
library(pheatmap)
pheatmap(
sales_matrix,
cluster_rows = FALSE,
cluster_cols = FALSE,
color = colorRampPalette(colors = c("midnightblue", "mediumorchid", "mistyrose"))(100), # Twilight-style palette
display_numbers = TRUE,
number_format = "%.0f",
fontsize = 14,
fontsize_number = 10,
main = "Heatmap of Total Sales by Product Category and Region"
)1.5 Relationship
1.5.1 Scatter Plot
# ==============================
# 1. Load Required Libraries
# ==============================
library(ggplot2)
library(dplyr)
# ==============================
# 2. Load and Prepare Data
# ==============================
data_bisnis <- read.csv("data_dv.csv", stringsAsFactors = FALSE)
data_bisnis <- data_bisnis %>%
mutate(
Quantity = as.numeric(Quantity),
Total_Price = as.numeric(Total_Price),
Price_per_Unit = as.numeric(Price_per_Unit)
) %>%
filter(!is.na(Quantity), !is.na(Total_Price), !is.na(Price_per_Unit), !is.na(Region))
# ==============================
# 3. Define Twilight-like Colors
# ==============================
twilight_colors <- c(
"#e5a9e2", "#a295d5", "#4c9bbd", "#4da6a6", "#95b66f", "#d1b35e"
)
region_names <- sort(unique(data_bisnis$Region))
region_colors <- setNames(twilight_colors[seq_along(region_names)], region_names)
# ==============================
# 4. Create Wide Scatter Plot
# ==============================
ggplot(data_bisnis, aes(x = Quantity, y = Total_Price, color = Region, size = Price_per_Unit)) +
geom_point(alpha = 0.7) +
scale_color_manual(values = region_colors) +
scale_size_continuous(range = c(3, 15)) +
labs(
title = "Scatter Plot of Total Price vs Quantity by Region",
x = "Quantity",
y = "Total Price",
color = "Region",
size = "Price per Unit"
) +
theme_minimal(base_size = 18) +
theme(
plot.title = element_text(size = 22, face = "bold", hjust = 0.5),
axis.title = element_text(size = 16),
axis.text = element_text(size = 14),
legend.title = element_text(size = 16),
legend.text = element_text(size = 14),
legend.position = "right"
)1.5.2 Bubble Chart
# ==============================
# 1. Load Required Libraries
# ==============================
library(ggplot2)
library(dplyr)
library(scico)
# ==============================
# 2. Load and Prepare Data
# ==============================
data_bisnis <- read.csv("data_dv.csv", stringsAsFactors = FALSE)
data_bisnis <- data_bisnis %>%
mutate(
Quantity = as.numeric(Quantity),
Total_Price = as.numeric(Total_Price),
Price_per_Unit = as.numeric(Price_per_Unit)
) %>%
filter(!is.na(Quantity), !is.na(Total_Price), !is.na(Price_per_Unit), !is.na(Region))
# ==============================
# 3. Generate 'vik' Colors for Regions
# ==============================
unique_regions <- unique(data_bisnis$Region)
vik_colors <- scico(length(unique_regions), palette = "vik")
names(vik_colors) <- unique_regions
# ==============================
# 4. Create Bubble Chart
# ==============================
ggplot(data_bisnis, aes(x = Quantity, y = Total_Price, size = Price_per_Unit, color = Region)) +
geom_point(alpha = 0.7, stroke = 0.4) +
scale_color_manual(values = vik_colors) +
scale_size_continuous(range = c(2, 15)) +
labs(
title = "Bubble Chart: Quantity vs Total Price\n(Size = Price per Unit)",
x = "Quantity",
y = "Total Price",
size = "Price per Unit",
color = "Region"
) +
theme_minimal(base_size = 18) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 22),
legend.position = "right"
)1.5.3 Correlation Matrix
# ==============================
# 1. Load Libraries
# ==============================
library(ggplot2)
library(dplyr)
library(reshape2)
library(scales)
# ==============================
# 2. Load and Prepare Data
# ==============================
data_bisnis <- read.csv("data_dv.csv", stringsAsFactors = FALSE)
# Pilih kolom numerik
numeric_data <- data_bisnis %>% select(where(is.numeric))
# Hitung korelasi Pearson
corr_matrix <- cor(numeric_data, use = "complete.obs")
# Konversi ke long format
corr_long <- melt(corr_matrix, varnames = c("Var1", "Var2"), value.name = "Correlation")
# Tetapkan urutan variabel agar simetris
var_order <- colnames(corr_matrix)
corr_long$Var1 <- factor(corr_long$Var1, levels = var_order)
corr_long$Var2 <- factor(corr_long$Var2, levels = var_order)
# ==============================
# 3. Plot Heatmap Besar
# ==============================
ggplot(corr_long, aes(x = Var1, y = Var2, fill = Correlation)) +
geom_tile(color = "white", linewidth = 0.5) +
geom_text(aes(label = sprintf("%.2f", Correlation)), size = 4.5, color = "black") +
scale_fill_gradient2(
low = "blue", mid = "white", high = "red", midpoint = 0,
limits = c(-1, 1), name = "Correlation"
) +
coord_fixed() +
labs(title = "Correlation Matrix of Numeric Variables") +
theme_minimal(base_size = 14) +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1, size = 12),
axis.text.y = element_text(size = 12),
axis.title = element_blank(),
plot.title = element_text(hjust = 0.5, size = 18, face = "bold"),
panel.grid = element_blank()
)1.6 Time Series
1.6.1 Line Chart
# Memuat library yang diperlukan
library(ggplot2)
library(dplyr)
library(lubridate)
# Membaca dataset
data <- read.csv("data_dv.csv")
# Mengonversi Transaction_Date ke format tanggal dan mengekstrak tahun-bulan
data <- data %>%
mutate(Date = as.Date(Transaction_Date, format = "%Y-%m-%d"),
YearMonth = floor_date(Date, "month")) %>%
filter(!is.na(Total_Price) & Total_Price > 0 & !is.na(Date)) # Memastikan data valid
# Mengelompokkan data berdasarkan YearMonth, menghitung total penjualan
data_agg <- data %>%
group_by(YearMonth) %>%
summarise(Total_Sales = sum(Total_Price, na.rm = TRUE), .groups = "drop")
# Membuat line chart total penjualan per bulan
ggplot(data_agg, aes(x = YearMonth, y = Total_Sales)) +
geom_line(size = 1.5, color = "steelblue") +
geom_point(size = 2, color = "steelblue") +
labs(
title = "Total Sales Over Time",
x = "Date",
y = "Total Sales (USD)"
) +
theme_minimal(base_size = 15) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 18),
axis.title = element_text(size = 14),
axis.text.x = element_text(angle = 45, hjust = 1),
panel.grid.major = element_line(linetype = "dashed", color = "gray80")
)1.6.2 Area Chart
# ==============================
# 1. Load libraries
# ==============================
library(ggplot2)
library(dplyr)
library(lubridate)
# ==============================
# 2. Load and prepare data
# ==============================
df <- read.csv("data_dv.csv") # pastikan path dan file-nya benar
# Pastikan nama kolom benar
str(df) # Gunakan ini sekali untuk lihat nama-nama kolom## 'data.frame': 500 obs. of 25 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Transaction_ID : chr "7zmPHxF7XfN9" "y4bCY9pKTBWU" "8k0B7XX19Ykf" "l8ahQz5YNOKz" ...
## $ Transaction_Date : chr "2021-07-14" "2020-11-16" "2023-03-22" "2023-01-02" ...
## $ Customer_ID : chr "BAl3Y7yxev" "TYY0h5C190" "nUX640AaXg" "sBZyUSJLEP" ...
## $ Product_Category : chr "Clothing" "Electronics" "Home" "Home" ...
## $ Product_ID : chr "P0370" "P0185" "P0443" "P0035" ...
## $ Quantity : int 2 5 3 6 3 1 2 5 4 1 ...
## $ Unit_Price : num 15.2 10.2 17.7 28.3 11.9 ...
## $ Discount : num 0 0.15 0.05 0.22 0.13 0.07 0.3 0.23 0.27 0.09 ...
## $ Region : chr "North" "West" "West" "North" ...
## $ Sales_Channel : chr "Online" "Offline" "Online" "Offline" ...
## $ Delivery_Time : int 5 2 8 8 7 9 5 2 3 9 ...
## $ Total_Price : num 30.4 43.4 50.6 132.4 31.1 ...
## $ Price_per_Unit : num 15.18 8.69 16.85 22.07 10.36 ...
## $ Efficiency : num 0.4 2.5 0.375 0.75 0.429 ...
## $ Feature_Interaction : num 0 0.75 0.15 1.32 0.39 0.07 0.6 1.15 1.08 0.09 ...
## $ Cross_Term : chr "Clothing_North" "Electronics_West" "Home_West" "Home_North" ...
## $ ID_Prefix : chr "P0" "P0" "P0" "P0" ...
## $ ID_Length : int 5 5 5 5 5 5 5 5 5 5 ...
## $ ID_HasPattern : chr "true" "true" "true" "true" ...
## $ Discount_Level : int 1 2 1 3 2 1 4 4 4 2 ...
## $ Sales_Rank : int 253 157 121 4 246 466 361 303 111 424 ...
## $ Avg_Quantity_Region : num 2.99 3.12 3.12 2.99 2.99 ...
## $ Sum_Sales_Region : num 4865 4170 4170 4865 4865 ...
## $ Count_Product_Region: int 141 120 120 141 141 141 120 113 113 113 ...
# Ubah nama kolom sesuai dengan yang ada di file
df$Date <- as.Date(df$Transaction_Date) # ubah jika nama kolom beda
df$Year <- year(df$Date)
# Filter data valid
df_filtered <- df %>%
filter(!is.na(Unit_Price), Unit_Price > 0, Year >= 2020, Year <= 2024)
# Aggregasi
data_agg <- df_filtered %>%
group_by(Year, Sales_Channel) %>%
summarise(Average_Unit_Price = mean(Unit_Price, na.rm = TRUE)) %>%
ungroup()
# ==============================
# 3. Plot stacked area chart
# ==============================
ggplot(data_agg, aes(x = Year, y = Average_Unit_Price, fill = Sales_Channel)) +
geom_area(alpha = 0.8, position = 'stack') +
scale_fill_manual(values = c("Online" = "#0d0887", "Offline" = "#7e03a8")) +
labs(
title = "Average Unit Price per Year by Sales Channel",
x = "Year",
y = "Average Unit Price",
fill = "Sales Channel"
) +
theme_minimal(base_size = 15) +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
legend.position = "top"
)