DQLab Internal Data Challenge - Case: Olist Datasets

Penjelasan

Pada kali ini DQLab akan mengajak para membernya untuk mengerjakan Data Challenge dengan menggunakan dataset penjualan dari Olist, yang merupakan e-commerce terbesar di Brazil. Dataset ini tersedia secara online dan dapat diakses secara mudah di situs www.kaggle.com. Apabila para members ingin mendapatkan dataset dari berbagai bidang dan bentuk, kami sarankan untuk dapat mengunjungi situs tersebut.

Dalam Data Challenge kali ini, peserta akan diberikan 9 dataset penjualan dari tahun 2016 – 2018, yang dapat dieksplorasi semaksimal mungkin untuk menemukan insight sebanyak – banyaknya dari dataset tersebut. Namun untuk mengatasi seluruh challenge dengan baik, maka DQLab members juga perlu menyiapkan tambahan dataset yang dapat diakses secara bebas di internet.

Untuk memudahkan pembahasan, maka kita hanya akan menggunakan data dari tahun 2017 – 2018 saja, dan produk yang akan dianalisa lebih lanjut adalah top 10 Kategori Produk dengan Jumlah Penjualan Terbesar. Namun apabila members DQLab ingin mengeksplorasi data lebih lanjut, maka silahkan saja gunakan dataset secara lengkap.

Agar task/challenge yang diminta dapat diselesaikan dan dijelaskan dengan baik, maka DQLab members dalam Data Challenge kali ini diharapkan dapat menjawab task/challenge yang ada dengan sistematika seperti berikut:
- Data Preparation, merupakan proses membaca file dan memasukkannya ke dalam environment di RStudio, melakukan perubahan tipe data, cleansing, dan berbagai hal lainnya yang dibutuhkan agar data kita siap untuk dieksplorasi, dianalisa, dan divisualisasikan dengan baik.
- Data Exploration, yang ditujukan untuk mengeksplorasi data secara lebih lanjut, agar kita mendapatkan gambaran maupun informasi utuh dari dataset yang kita miliki. Tahapan ini sangat krusial untuk pemahaman data, dan dalam menjawab tugas/memberikan solusi.
- Data Visualization, dengan memvisualkan data kita ke dalam plot/chart, diharapkan kita mampu mendapatkan insight data kita secara lebih baik, seperti misalnya ketika ingin melihat tren/pola, mencari data anomali, data terbsear/terkecil, dan sebagainya.

Dan karena prosesnya cukup banyak, maka kita akan tuangkan dalam bentuk .Rmd file yang di-knit menjadi html file, sehingga runutan prosesnya bisa lebih mudah diikuti.

Data Preparation

Set Up Library

Untuk membantu kita dalam melakukan persiapan dan eksplorasi data, maka kita perlu memanggil beberapa library. Silahkan taruh library yang dibutuhkan di dalam chunk teratas file .Rmarkdown kita.

Adapun Library yang digunakan dalam Data Challenge kali ini adalah:
library(dplyr) # data wrangling
library(tidyr) # data wrangling
library(lubridate) # manipulasi data berbantuk date
library(scales) # adjusting skala axis grafik
library(ggplot2) # membuat grafik
library(ggthemes) # tema additional dalam ggplot untuk mempercantik
library(plotly) # untuk menampilkan grafik secara interaktif

Lihat Structure dari masing - masing dataset

## 'data.frame':    99441 obs. of  5 variables:
##  $ customer_id             : Factor w/ 99441 levels "00012a2ce6f8dcda20d059ce98491703",..: 2611 9562 30461 69606 30708 52562 98443 36424 35167 29245 ...
##  $ customer_unique_id      : Factor w/ 96096 levels "0000366f3b9a7992bf8c76cfdf3221e2",..: 50397 15434 2273 14193 19734 28806 65370 33034 6612 58226 ...
##  $ customer_zip_code_prefix: int  14409 9790 1151 8775 13056 89254 4534 35182 81560 30575 ...
##  $ customer_city           : Factor w/ 4119 levels "abadia dos dourados",..: 1383 3429 3598 2344 708 1937 3598 3866 1144 454 ...
##  $ customer_state          : Factor w/ 27 levels "AC","AL","AM",..: 26 26 26 26 26 24 26 11 18 11 ...
## 'data.frame':    1000163 obs. of  5 variables:
##  $ geolocation_zip_code_prefix: int  1037 1046 1046 1041 1035 1012 1047 1013 1029 1011 ...
##  $ geolocation_lat            : num  -23.5 -23.5 -23.5 -23.5 -23.5 ...
##  $ geolocation_lng            : num  -46.6 -46.6 -46.6 -46.6 -46.6 ...
##  $ geolocation_city           : Factor w/ 8011 levels "* cidade","...arraial do cabo",..: 7029 7029 7029 7029 7029 6249 7029 7029 7029 7029 ...
##  $ geolocation_state          : Factor w/ 27 levels "AC","AL","AM",..: 26 26 26 26 26 26 26 26 26 26 ...
## 'data.frame':    99441 obs. of  8 variables:
##  $ order_id                     : Factor w/ 99441 levels "00010242fe8c5a6d1ba2dd792cb16214",..: 88951 32546 27770 57386 67044 63543 7553 39236 46083 89697 ...
##  $ customer_id                  : Factor w/ 99441 levels "00012a2ce6f8dcda20d059ce98491703",..: 61761 68730 25514 96584 53774 31118 92191 60518 95387 19282 ...
##  $ order_status                 : Factor w/ 8 levels "approved","canceled",..: 4 4 4 4 4 4 5 4 4 4 ...
##  $ order_purchase_timestamp     : Factor w/ 98875 levels "2016-09-04 21:15:19",..: 27602 90668 94566 35023 55222 15891 6386 9743 667 18535 ...
##  $ order_approved_at            : Factor w/ 90734 levels "","2016-09-15 12:16:38",..: 26910 83755 86887 33880 52143 15447 6368 9419 707 18033 ...
##  $ order_delivered_carrier_date : Factor w/ 81019 levels "","2016-10-08 10:34:01",..: 24736 76469 78219 31487 49664 13978 1 9013 594 17711 ...
##  $ order_delivered_customer_date: Factor w/ 95665 levels "","2016-10-11 13:46:32",..: 25876 88743 91784 33916 50233 15592 1 9155 597 18403 ...
##  $ order_estimated_delivery_date: Factor w/ 459 levels "2016-09-30 00:00:00",..: 213 412 428 252 299 159 100 121 56 175 ...
## 'data.frame':    32951 obs. of  9 variables:
##  $ product_id                : Factor w/ 32951 levels "00066f42aeeb9f3007548bb9d3f33c38",..: 4054 7646 19352 26673 20306 8572 14931 4942 7250 18075 ...
##  $ product_category_name     : Factor w/ 74 levels "","agro_industria_e_comercio",..: 64 5 34 11 74 47 28 56 30 14 ...
##  $ product_name_lenght       : int  40 44 46 27 37 60 56 56 57 36 ...
##  $ product_description_lenght: int  287 276 250 261 402 745 1272 184 163 1156 ...
##  $ product_photos_qty        : int  1 1 1 1 4 1 4 2 1 1 ...
##  $ product_weight_g          : int  225 1000 154 371 625 200 18350 900 400 600 ...
##  $ product_length_cm         : int  16 30 18 26 20 38 70 40 27 17 ...
##  $ product_height_cm         : int  10 18 9 4 17 5 24 8 13 10 ...
##  $ product_width_cm          : int  14 20 15 26 13 11 44 40 17 12 ...
## 'data.frame':    3095 obs. of  4 variables:
##  $ seller_id             : Factor w/ 3095 levels "0015a82c2db000af6aaaf3ae2ecb0532",..: 623 2541 2506 2326 982 2343 2749 322 1458 2490 ...
##  $ seller_zip_code_prefix: int  13023 13844 20031 4195 12914 20920 55325 16304 1529 80310 ...
##  $ seller_city           : Factor w/ 611 levels "04482255","abadia de goias",..: 102 343 451 519 81 451 84 403 519 160 ...
##  $ seller_state          : Factor w/ 23 levels "AC","AM","BA",..: 23 23 17 23 23 17 14 23 23 16 ...
## 'data.frame':    112650 obs. of  7 variables:
##  $ order_id           : Factor w/ 98666 levels "00010242fe8c5a6d1ba2dd792cb16214",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ order_item_id      : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ product_id         : Factor w/ 32951 levels "00066f42aeeb9f3007548bb9d3f33c38",..: 8629 29598 25668 15323 22080 30848 18182 11123 6385 9013 ...
##  $ seller_id          : Factor w/ 3095 levels "0015a82c2db000af6aaaf3ae2ecb0532",..: 855 2679 1118 1920 2698 1224 1372 1091 1997 2231 ...
##  $ shipping_limit_date: Factor w/ 93318 levels "2016-09-19 00:15:34",..: 24067 7194 45696 89769 1641 9384 39631 81823 60182 81339 ...
##  $ price              : num  58.9 239.9 199 13 199.9 ...
##  $ freight_value      : num  13.3 19.9 17.9 12.8 18.1 ...
## 'data.frame':    103886 obs. of  5 variables:
##  $ order_id            : Factor w/ 99440 levels "00010242fe8c5a6d1ba2dd792cb16214",..: 71446 65633 14657 72396 25967 16046 46192 23843 12217 2146 ...
##  $ payment_sequential  : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ payment_type        : Factor w/ 5 levels "boleto","credit_card",..: 2 2 2 2 2 2 2 2 2 1 ...
##  $ payment_installments: int  8 1 1 8 2 2 1 3 6 1 ...
##  $ payment_value       : num  99.3 24.4 65.7 107.8 128.4 ...
## 'data.frame':    100000 obs. of  7 variables:
##  $ review_id              : Factor w/ 99173 levels "0001239bc1de2e33cb583967c2ca4c67",..: 48013 50030 13322 89282 95962 8159 3060 48292 63672 52194 ...
##  $ order_id               : Factor w/ 99441 levels "00010242fe8c5a6d1ba2dd792cb16214",..: 45052 63915 97051 39397 55031 68818 88966 75802 60275 72099 ...
##  $ review_score           : int  4 5 5 5 5 1 5 5 5 4 ...
##  $ review_comment_title   : Factor w/ 4601 levels "","-","- Luminária de Mesa pelic",..: 1 1 1 1 1 1 1 1 1 3805 ...
##  $ review_comment_message : Factor w/ 36923 levels "","'entrega feita dentro do prazo",..: 1 1 1 31778 25773 1 1 1 1 4357 ...
##  $ review_creation_date   : Factor w/ 637 levels "2016-10-02 00:00:00",..: 413 463 442 147 454 497 230 620 170 536 ...
##  $ review_answer_timestamp: Factor w/ 99010 levels "2016-10-07 18:32:28",..: 45452 56963 51957 5910 54897 66179 15081 93211 7935 75810 ...
## 'data.frame':    71 obs. of  2 variables:
##  $ ï..product_category_name     : Factor w/ 71 levels "agro_industria_e_comercio",..: 12 45 9 14 55 33 62 71 69 65 ...
##  $ product_category_name_english: Factor w/ 71 levels "agro_industry_and_commerce",..: 44 16 6 8 40 66 60 50 69 71 ...

Note: Jika ingin melihat ringkasan data, bisa gunakan fungsi summary(). Jika ingin lihat gambaran sepotong data tanpa menampilkan semua, gunakan fungsi head() dan tail(). Semakin banyak Anda mengeksplorasi data Anda, semakin baik Anda memahaminya.

Ada baiknya juga jika Anda memahami maksud dari setiap variabel yang ada. Untuk mengetahui definisi/arti dari setiap variabel/kolom yang ada, kami sarankan Anda mengunjungi: https://www.kaggle.com/olistbr/brazilian-ecommerce

Ubah Jenis data yang masih tidak sesuai

Dalam upaya untuk melakukan pengubahan, kita akan banyak menggunakan bantuan fungsi - fungsi dari package dplyr, tidyr dan lubridate. Jangan ragu untuk membuka fitur help() jika Anda ingin memahami lebih banyak fungsi - fungsi dalam package tersebut.

Untuk mempersingkat, dalam penjelasan kali ini kita hanya mengganti jenis data yang tidak sesuai pada variabel yang akan kita gunakan selanjutnya. Namun kami mendorong Anda untuk berlatih menemukan ketidaksesuaian data dan melakukan pengubahan dengan tepat.

Contoh: Mengubah Ketidakesuaian Jenis Data pada cust

## 'data.frame':    99441 obs. of  5 variables:
##  $ customer_id             : chr  "06b8999e2fba1a1fbc88172c00ba8bc7" "18955e83d337fd6b2def6b18a428ac77" "4e7b3e00288586ebd08712fdd0374a03" "b2b6027bc5c5109e529d4dc6358b12c3" ...
##  $ customer_unique_id      : chr  "861eff4711a542e4b93843c6dd7febb0" "290c77bc529b7ac935b93aa66c333dc3" "060e732b5b29e8181a18229c7b0b2b5e" "259dac757896d24d7702b9acbbff3f3c" ...
##  $ customer_zip_code_prefix: int  14409 9790 1151 8775 13056 89254 4534 35182 81560 30575 ...
##  $ customer_city           : Factor w/ 4119 levels "abadia dos dourados",..: 1383 3429 3598 2344 708 1937 3598 3866 1144 454 ...
##  $ customer_state          : Factor w/ 27 levels "AC","AL","AM",..: 26 26 26 26 26 24 26 11 18 11 ...

Note: Jangan lupa untuk jalankan fungsi str() untuk memeriksa apakah perubahan yang kita lakukan sudah sesuai.

Contoh: Mengubah Ketidakesuaian Jenis Data pada ordr

## 'data.frame':    99441 obs. of  8 variables:
##  $ order_id                     : chr  "e481f51cbdc54678b7cc49136f2d6af7" "53cdb2fc8bc7dce0b6741e2150273451" "47770eb9100c2d0c44946d9cf07ec65d" "949d5b44dbf5de918fe9c16f97b45f8a" ...
##  $ customer_id                  : chr  "9ef432eb6251297304e76186b10a928d" "b0830fb4747a6c6d20dea0b8c802d7ef" "41ce2a54c0b03bf3443c3d931a367089" "f88197465ea7920adcdbec7375364d82" ...
##  $ order_status                 : Factor w/ 8 levels "approved","canceled",..: 4 4 4 4 4 4 5 4 4 4 ...
##  $ order_purchase_timestamp     : POSIXct, format: "2017-10-02 10:56:33" "2018-07-24 20:41:37" ...
##  $ order_approved_at            : POSIXct, format: "2017-10-02 11:07:15" "2018-07-26 03:24:27" ...
##  $ order_delivered_carrier_date : POSIXct, format: "2017-10-04 19:55:00" "2018-07-26 14:31:00" ...
##  $ order_delivered_customer_date: POSIXct, format: "2017-10-10 21:25:13" "2018-08-07 15:27:45" ...
##  $ order_estimated_delivery_date: POSIXct, format: "2017-10-18" "2018-08-13" ...

Task 1

Temukan Top 10 Kategori Produk dengan Jumlah Penjualan Terbesar, dengan Kategori Produknya yang berbahasa Inggris. (1 poin)

Siapkan Dataset

Filter Top 10 Produk dengan jumlah Penjualan Terbesar di Tahun 2017 - 2018

##  [1] "auto"                  "bed_bath_table"       
##  [3] "computers_accessories" "furniture_decor"      
##  [5] "garden_tools"          "health_beauty"        
##  [7] "housewares"            "sports_leisure"       
##  [9] "telephony"             "watches_gifts"

Filter Tahun 2017 - 2018 saja

Sebelumnya, Kita perlu menggabungkan beberapa dataset terlebih dulu, untuk mendapatkan informasi tanggal pembelian.

Lalu, kita perlu melakukan konversi format pada order_puchase_timestamp dari tipe POSIXCT menjadi Date. karena kita hanya membutuhkan informasi tanggal untuk menampilkan jumlah penjualan sepanjang tahun. Agar tidak mengubah struktur data, ada baiknya kita tambahkan variabel/kolom baru dengan nama Date_order_purchase_timestamp untuk menampung hasil konversi. Setelah itu, kita filter tahunnya hanya untuk yang mencakup 2017 dan 2018 saja.

Visualisasi

Visualkan Top 10 Penjualan Terbanyak tersebut dengan menggunakan ggplot2 dan plotly.

Task 2

Siapkan Dataset yang diperlukan

Buat dataset untuk memvisualkan jumlah penjualan produk sepanjang 2017 - 2018.

Visualisasi

Visualkan dataset tersebut dengan menggunakan ggplot2 dan plotly.

Task 3

Jumlah Penjualan terbesar terjadi di tanggal berapa? Berapa jumlah produk terjual dan nilainya (satuan mata uang Real) pada tanggal tersebut? (1 poin)

Untuk menjawab Pertanyaan di Task 3, kita tinggal melihat grafik, dan dengan mudah kita bisa menemukan pada tanggal berapa terjadinya jumlah penjualan terbanyak. Sekarang mari kita lihat berapa Nilai Penjualan di tanggal tersebut. Jika hanya untuk menjawab nilainya, maka kita cukup subset saja datanya. Namun karena saat ini konteksnya belajar, maka mari kita plotkan pula dalam visualisasi.

Subset Nilai Penjualan pada saat Jumlah Penjualannya Terbanyak

Visualisasi Nilai Penjualan Sepanjang 2017 - 2018

Task 4

Berikan nama lengkap semua state seller dan customer, State mana yang memiliki seller dan customer paling banyak? (1 poin)

Web Scraping dengan Google Sheets

Untuk dapat memberikan nama lengkap semua State Seller dan Customer, maka kita membutuhkan tambahan data yang belum ada di dataset. Data ini bisa kita ambli di: https://en.wikipedia.org/wiki/States_of_Brazil

Namun jika kita langsung coba copy-paste tabelnya, bisa jadi kurang rapi tampilannya. Hal ini juga tidak akan efisien jika kita butuh mengambil informasi dalam jumlah yang lebih banyak. Maka dari itu, kita bisa gunakan fitur web-scraping secara sederhana melalui googlesheet. Cara melakukannya:
1. Login ke dalam googlesheets, dan buka spreadsheet baru.
2. Copy alamat laman https://en.wikipedia.org/wiki/States_of_Brazil dan pasti di cell ‘A1’.
3. Gunakan fungsi IMPORTHTML() sebagai berikut: =IMPORTHTML(A1,"table",6) Dimana A1 adalah target laman yang kita ingin ambil, “table” adalah jenis data yang ingin kita ambil, dan “6” adalah urutan tabel yang mau kita ambil di laman tersebut. Anda bisa hitung urutan tabel dari atas, namun tidak maslah jika Anda ingin memasukkan angkanya secara coba-coba, karena cukup sulit menentukan urtannya secara pas.

Buat Dataset yang diperlukan

Setelah melakukan scraping, buatlah 2 .csv file yang masing - masimg memiliki nama kolom customer_state dan seller_state, sehingga dapat kita merge dengan dataset orditm. Kemudian read-lah kedua .csv file tersebut.

Gabungkan dataset orditm dengan cust.state dan sell.state untuk mendapatkan nama state yang lengkap (panjang).

Gabungkan jml.cust dan jml.sell Untuk melihat State dengan Customer dan Seller Terbanyak.

Jawabannya adalah São Paulo

Visualisasi

Bagaimana jika kita ingin memvisualkan informasi di atas? Maka ada tahapan yang perlu dilakukan.

Buat Long Dataset dengan menggunakan fungsi gather dari tidyr.

Visualisasi dengan ggplot dan plotly.

Menariknya, jumlah Seller dan Customer tidak selalu selaras. Ada daerah yang jumlah Seller-nya rendah, namun Customer-nya tinggi, dan sebaliknya.

Task 5

Berapa Total Nilai Penjualan, Jumlah Penjualan dan Jumlah Pembeli? (1 poin)

Gunakan dplyr untuk grouping dan hitung jumlah (count) maupun nilai (sum value) penjualan, serta jumlah (count) customer.

Task 6

Payment value terbesar dengan menggunakan metode apa? Berapa nilainya? (1 poin)

Siapkan Dataset

Sekali lagi, kita akan gunakan dplyr untuk tugas ini.

Jawabannya adalah credit_card.

Visualisasi

Task 7

Berapa jumlah penjualan pada saat musim hujan di Brazil? (1 poin)

Untuk menjawab pertanyaan ini pun kita butuh informasi tambahan dari internet: https://www.climatestotravel.com/climate/brazil

Berdasarkan info dari laman tersebut, kita bisa mengetahui bahwa rainy season di Brazil adalah pada Oktober - Maret.

Siapkan Dataset

Mula-mula kita perlu siapkan dataset yang dapat menunjukkan Bulan pada tiap tanggal Pembelian.

Selanjutnya, kita perlu membuat fungsi untuk membedakan Season, dimana Season di Brazil hanya ada 2, yakni Wet dan Dry saja.

Aplikasikan fungsi season di atas pada Bulan Pembelian, dan buat kolom baru bernama season.

Hitung Jumlah Penjualan pada tiap Musim dengan dplyr.

Ternyata, jumlah penjualan pada saat musim penghujan di Brazil tahun 2017 - 2018 adalah: 32,372.

Task 8

Berdasarkan Jam Pembelian, bagilah ke dalam 4 kategori, 12AM-6AM, 6AM-12PM, 12PM-6PM, dan 6PM – 12AM. Manakah range waktu yang paling banyak terjadi pembelian? (1 poin)

Siapkan Dataset

Mula-mula kita perlu siapkan fungsi yang dapat membagi Jam pada tiap tanggal Pembelian sesuai dengan ketentuan yang diminta.

Selanjutnya, siapkan datasetnya. Kali ini, kita coba pendekatan yang berbeda dibanding Task 7, dimana pengubahan tipe data, implementasi fungsi (event) dan juga reordering level kita lakukan sekaligus melalui fungsi mutate.

Cari Mana Range Waktu yang Paling memiliki pembelian.

Ternyata, Jumlah Pembelian terbanyak ada pada waktu 12AM to 6AM.

Visualisasi

Sebenarnya visualiasi dari Task ini sama saja dengan Task 7. Oleh karena itu, mari kita coba visualisasi baru dengan menggunakan package ggmosaic untuk membuat mosaic plot. Jenis plot ini jarang digunakan, namun sebenarnya cukup bermanfaat jika kita ingin melihat kaitan antara 2 variabel kategorik.

Dalam kasus kali ini, mari coba kita lihat kaitan antara Order_Purchase_Time dengan product_category_name_english. Apakah pembelian kategori produk tertentu lebih besar pada jam tertentu?

Task 9

Berapa km jarak terjauh pengiriman yang pernah dilakukan? (1 poin)

Siapkan Dataset

Ada beberapa tahapan yang perlu dilalui untuk dapat menyiapkan dataset bagi Task 9.

Pertama, kita perlu tahu bahwa untuk menghitung jarak, kita harus menegtahui koordinat si penjual dan pembeli. Sedangkan di dataset orditm tidak ada. Dataset yang memiliki koordinat (long-lat) adalah geol berdasarkan zip code, dan unungnya, di orditm ada zip code dari pembeli dan penjual. Karena itu kita perlu menggabungkan mereka berdua. Selain itu, hal yang perlu diperhatikan adalah, karena di Task ini yang diminta adalah pengiriman, maka data harus di-filter hanya yang mencakup delivered saja.

Setelah lihat kondisi data di geol, ternyata ada cukup banyak zip code yang memiliki banyak koordinat. Dengan demikian, kita perlu filter unique zip code, berdasarkan jumlah koordinat terbanyak

Sekarang, kita bisa merge dataset geol dengan orditm. Jangan lupa filter juga order statusnya hanya yang “delivered”.

Selanjutnya, kita hitung jarak antara penjual dan pembeli dengan menggunakan fungsi distHaversine dari package geosphere. Lalu simpan perhitungan jarak di dalam dataset baru kita dengan nama variabel distance. Namun perlu diingat, untuk menyederhanakan perhitungan, kita menggunakan fungsi distHaversine yang menghitung berdasarkan garis lurus. Nilai aktualnya bisa saja berbeda.

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0   215.0   438.6   603.0   789.3  8688.0

Jarak terjauh yang ditempuh dalam pengiriman barang adalah 8688 km.

Task 10

Berapa hari rata – rata waktu pengiriman barang? (1 poin)

Untuk menjawab pertanyaan di atas, kita bisa menggunakan dataset yang sudah dibentuk di Task 9. Tinggal hitung perbedaan waktu penerimaan barang dengan pembelian barang, menggunakan fungsi difftime yang akan menghasilkan unit dalam hari. Lalu simpan perhitungan durasi pengiriman di dalam dataset baru kita dengan nama variabel time.

##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##   0.7814   6.8437  10.2232  12.4833  15.4905 209.6286

Rataan waktu dalam pengiriman barang adalah sekitar 12.5 hari.

Arya Andhika

9/27/2019