1. Introduction

Data ini berisi catatan penjualan yang terperinci dari E-commerce di Amerika Serikat pada tahun 2020. Data penjualan tersebut terdiri Sales, Discount, Profit, Quantity, yang bersal dari 47 negara dan 350 kota.

1.1 Set Up

Di awal akan dilakukan set up awal untuk mengeset chunk dan membersikan environment.

Set up library yang akan digunakan

library(lubridate)
library("tidyr")

2. Data Wrangling

2.1 Input Data

Mengimpor dataset ecommerce2020 dari folder data_input yang diberi nama “ecommerce” Di sini kita akan menggunakan fungsi read.csv() untuk membaca file ekstensi CSV, yaitu object di R yang disimpan ke dalam sebuah file.

ecommerce = read.csv("data_input/ecommerce2020.csv")

Inspect data menggunakan fungsi head() yang berfungsi untuk memanggil 5 data teratas saja.

head(ecommerce)

Mengecek nama kolom di tiap kolom pada data ecommerce dengan fungsi names()

names(ecommerce)
#>  [1] "Order.Date"   "Row.ID"       "Order.ID"     "Ship.Mode"    "Customer.ID" 
#>  [6] "Segment"      "Country"      "City"         "State"        "Postal.Code" 
#> [11] "Region"       "Product.ID"   "Category"     "Sub.Category" "Product.Name"
#> [16] "Sales"        "Quantity"     "Discount"     "Profit"

Mengecek struktur data pada data ecommerce dengan fungsi str()

str(ecommerce) 
#> 'data.frame':    3312 obs. of  19 variables:
#>  $ Order.Date  : chr  "01-01-20" "01-01-20" "01-01-20" "01-01-20" ...
#>  $ Row.ID      : int  849 4010 6683 8070 8071 8072 8073 8074 8075 8076 ...
#>  $ Order.ID    : chr  "CA-2017-107503" "CA-2017-144463" "CA-2017-154466" "CA-2017-151750" ...
#>  $ Ship.Mode   : chr  "Standard Class" "Standard Class" "First Class" "Standard Class" ...
#>  $ Customer.ID : chr  "GA-14725" "SC-20725" "DP-13390" "JM-15250" ...
#>  $ Segment     : chr  "Consumer" "Consumer" "Home Office" "Consumer" ...
#>  $ Country     : chr  "United States" "United States" "United States" "United States" ...
#>  $ City        : chr  "Lorain" "Los Angeles" "Franklin" "Huntsville" ...
#>  $ State       : chr  "Ohio" "California" "Wisconsin" "Texas" ...
#>  $ Postal.Code : int  44052 90036 53132 77340 77340 77340 77340 77340 77340 77340 ...
#>  $ Region      : chr  "East" "West" "Central" "Central" ...
#>  $ Product.ID  : chr  "FUR-FU-10003878" "FUR-FU-10001215" "OFF-BI-10002012" "OFF-ST-10002743" ...
#>  $ Category    : chr  "Furniture" "Furniture" "Office Supplies" "Office Supplies" ...
#>  $ Sub.Category: chr  "Furnishings" "Furnishings" "Binders" "Storage" ...
#>  $ Product.Name: chr  "Linden 10\" Round Wall Clock, Black" "Howard Miller 11-1/2\" Diameter Brentwood Wall Clock" "Wilson Jones Easy Flow II Sheet Lifters" "SAFCO Boltless Steel Shelving" ...
#>  $ Sales       : num  48.9 474.4 3.6 454.6 141.4 ...
#>  $ Quantity    : int  4 11 2 5 5 4 4 5 14 2 ...
#>  $ Discount    : num  0.2 0 0 0.2 0.6 0.3 0.2 0.8 0.8 0.8 ...
#>  $ Profit      : num  8.56 199.26 1.73 -107.96 -187.38 ...

2.2 Changing The Data Type

Setelah data berhasil dimasukkan, selanjutnya adalah melakukan perubahan format pada element-element dalam data sehingga sesuai dengan isi data.

# merubah tipe data per kolom
ecommerce$Row.ID <- as.character(ecommerce$Row.ID)
ecommerce$Order.Date <- mdy(ecommerce$Order.Date)
ecommerce$Ship.Mode <- as.factor(ecommerce$Ship.Mode)
ecommerce$Segment <- as.factor(ecommerce$Segment)
ecommerce$Country <- as.factor(ecommerce$Country)
ecommerce$City <- as.factor(ecommerce$City)
ecommerce$State <- as.factor(ecommerce$State)
ecommerce$Region <- as.factor(ecommerce$Region)
ecommerce$Category <- as.factor(ecommerce$Category)
ecommerce$Postal.Code <- as.factor(ecommerce$Postal.Code)
ecommerce$Sub.Category <- as.factor(ecommerce$Sub.Category)

# memeriksa kembali struktur data 
str(ecommerce)
#> 'data.frame':    3312 obs. of  19 variables:
#>  $ Order.Date  : Date, format: "2020-01-01" "2020-01-01" ...
#>  $ Row.ID      : chr  "849" "4010" "6683" "8070" ...
#>  $ Order.ID    : chr  "CA-2017-107503" "CA-2017-144463" "CA-2017-154466" "CA-2017-151750" ...
#>  $ Ship.Mode   : Factor w/ 4 levels "First Class",..: 4 4 1 4 4 4 4 4 4 4 ...
#>  $ Customer.ID : chr  "GA-14725" "SC-20725" "DP-13390" "JM-15250" ...
#>  $ Segment     : Factor w/ 3 levels "Consumer","Corporate",..: 1 1 3 1 1 1 1 1 1 1 ...
#>  $ Country     : Factor w/ 1 level "United States": 1 1 1 1 1 1 1 1 1 1 ...
#>  $ City        : Factor w/ 350 levels "Aberdeen","Abilene",..: 174 175 99 138 138 138 138 138 138 138 ...
#>  $ State       : Factor w/ 47 levels "Alabama","Arizona",..: 33 4 47 41 41 41 41 41 41 41 ...
#>  $ Postal.Code : Factor w/ 437 levels "1841","1852",..: 169 356 208 296 296 296 296 296 296 296 ...
#>  $ Region      : Factor w/ 4 levels "Central","East",..: 2 4 1 1 1 1 1 1 1 1 ...
#>  $ Product.ID  : chr  "FUR-FU-10003878" "FUR-FU-10001215" "OFF-BI-10002012" "OFF-ST-10002743" ...
#>  $ Category    : Factor w/ 3 levels "Furniture","Office Supplies",..: 1 1 2 2 1 1 2 2 2 2 ...
#>  $ Sub.Category: Factor w/ 17 levels "Accessories",..: 10 10 4 15 10 6 3 4 4 2 ...
#>  $ Product.Name: chr  "Linden 10\" Round Wall Clock, Black" "Howard Miller 11-1/2\" Diameter Brentwood Wall Clock" "Wilson Jones Easy Flow II Sheet Lifters" "SAFCO Boltless Steel Shelving" ...
#>  $ Sales       : num  48.9 474.4 3.6 454.6 141.4 ...
#>  $ Quantity    : int  4 11 2 5 5 4 4 5 14 2 ...
#>  $ Discount    : num  0.2 0 0 0.2 0.6 0.3 0.2 0.8 0.8 0.8 ...
#>  $ Profit      : num  8.56 199.26 1.73 -107.96 -187.38 ...

2.3 Check Missing Value

Analisis kembali kolom-kolom pada data yang memiliki nilak kosong (NaN atau Na)

colSums(is.na(ecommerce))
#>   Order.Date       Row.ID     Order.ID    Ship.Mode  Customer.ID      Segment 
#>         1990            0            0            0            0            0 
#>      Country         City        State  Postal.Code       Region   Product.ID 
#>            0            0            0            0            0            0 
#>     Category Sub.Category Product.Name        Sales     Quantity     Discount 
#>            0            0            0            0            0            0 
#>       Profit 
#>            0

2.4 Remove Missing Value

Dari analisis di atas diketahui terdapat missing value pada kolom Order.Date sebanyak 1990 Sehingga untuk mengatasi “Missing Data” dalam Dataset, kita akan gunakan fungsi drop_na() dari tidyr package Fungsi drop_na berfungsi untuk menghapus baris yang memiliki nilai missing value pada kolom Order.Date

ecommerce  <- ecommerce %>% drop_na()     

# mengecek kembali Missing Value
colSums(is.na(ecommerce))
#>   Order.Date       Row.ID     Order.ID    Ship.Mode  Customer.ID      Segment 
#>            0            0            0            0            0            0 
#>      Country         City        State  Postal.Code       Region   Product.ID 
#>            0            0            0            0            0            0 
#>     Category Sub.Category Product.Name        Sales     Quantity     Discount 
#>            0            0            0            0            0            0 
#>       Profit 
#>            0
anyNA(ecommerce)
#> [1] FALSE

Missing value pada data telah berhasil dieliminasi dan data tidak ada lagi missing value

3. Data Processing

Berikut adalah informasi singkat dari masing-masing kolom pada dataframe ecommerce

summary(ecommerce)
#>    Order.Date            Row.ID            Order.ID        
#>  Min.   :2020-01-01   Length:1322        Length:1322       
#>  1st Qu.:2020-03-07   Class :character   Class :character  
#>  Median :2020-06-11   Mode  :character   Mode  :character  
#>  Mean   :2020-06-16                                        
#>  3rd Qu.:2020-09-12                                        
#>  Max.   :2020-12-11                                        
#>                                                            
#>           Ship.Mode   Customer.ID               Segment             Country    
#>  First Class   :219   Length:1322        Consumer   :654   United States:1322  
#>  Same Day      : 89   Class :character   Corporate  :392                       
#>  Second Class  :263   Mode  :character   Home Office:276                       
#>  Standard Class:751                                                            
#>                                                                                
#>                                                                                
#>                                                                                
#>             City              State      Postal.Code       Region   
#>  New York City:116   California  :278   98105  :  36   Central:301  
#>  Los Angeles  : 96   Texas       :135   10009  :  35   East   :361  
#>  Philadelphia : 78   New York    :122   94110  :  30   South  :202  
#>  San Francisco: 77   Washington  : 98   10024  :  29   West   :458  
#>  Seattle      : 77   Pennsylvania: 85   10035  :  29                
#>  Chicago      : 38   Florida     : 64   94122  :  27                
#>  (Other)      :840   (Other)     :540   (Other):1136                
#>   Product.ID                   Category        Sub.Category Product.Name      
#>  Length:1322        Furniture      :261   Binders    :208   Length:1322       
#>  Class :character   Office Supplies:807   Paper      :202   Class :character  
#>  Mode  :character   Technology     :254   Accessories:127   Mode  :character  
#>                                           Furnishings:123                     
#>                                           Storage    :108                     
#>                                           Art        :105                     
#>                                           (Other)    :449                     
#>      Sales             Quantity         Discount          Profit         
#>  Min.   :   0.556   Min.   : 1.000   Min.   :0.0000   Min.   :-3839.990  
#>  1st Qu.:  16.902   1st Qu.: 2.000   1st Qu.:0.0000   1st Qu.:    1.677  
#>  Median :  54.498   Median : 3.000   Median :0.2000   Median :    7.916  
#>  Mean   : 206.738   Mean   : 3.792   Mean   :0.1617   Mean   :   19.343  
#>  3rd Qu.: 195.506   3rd Qu.: 5.000   3rd Qu.:0.2000   3rd Qu.:   27.840  
#>  Max.   :7999.980   Max.   :14.000   Max.   :0.8000   Max.   : 1351.990  
#> 

Dari informasi di atas dapat dirangkum sebagai berikut:

  1. Order.Date pertama dilakukan pada tanggal 1 januari 2020
  2. Standard Class adalah jenis pengiriman paling populer, sedangkan Same day adala pengiriman yang kurang populer
  3. Segment jenis Consumer adalah pembeli terbanyak, sedangkan Home Office adalah yang paling sedikit.
  4. Pembeli mayoritas berasal dari Amerika Serikat bagian barat
  5. Penjualan terpopuler berasal dari kolom category adalah Office Supplies
  6. Dalam satu tahun rata-rata penjualan ecommerce di dapat sebesar 206.738; dengan jumlah penjualan tertinggi sebesar 7999.980 dan penjualan terendah sebesar 0.556
  7. Profit tertinggi pada ecommercediketahui sebesar 1351.990, namun memiliki profit terendah/kerugian sebesar -3839.990, sehingga rata-rata profit yang dimiliki dalam setahun adalah 19.343.
  8. Discount tertinggi adalah 80% dari rata-rata discount sebesar 16%.

3.1 Sales and Profit Analysis

Melihat data dari kolom Category yang menunjukkan penjualan (Sales) harga terendah

ecommerce[ecommerce$Sales == min(ecommerce$Sales),]

Explanation: Nilai penjualan terendah adalah 0.556 yang berasal dari ‘Sub.Category’ Binders, ‘Category’ Office Supplies, di kota Waco, Texas dan merugi -0.9452

Melihat data dari kolom Category yang menghasilkan laba(profit)tertinggi

ecommerce[ecommerce$Profit == max(ecommerce$Profit),]

Explanation: Nilai laba tertinggi adalah 1351.99 yang berasal dari ‘Sub.Category’ Machines, ‘Category’ Technology, di kota New York City, New York dengan nilai penjualan sebesar 5199.96

3.3 Total Quantity and Profit

Berapa Total jumlah pesanan dan total profit sejak E-Commerce mulai menjual produk?

paste("Total pesanan/kuantitas dalam setahun:",sum(ecommerce$Quantity),"items")
#> [1] "Total pesanan/kuantitas dalam setahun: 5013 items"
paste("Total laba/profit dalam setahun:",sum(ecommerce$Profit))
#> [1] "Total laba/profit dalam setahun: 25571.2181"

3.4 Discount Percentage

discount <- ecommerce[ecommerce$Discount >= min(ecommerce$Discount) & 
                        ecommerce$Discount <= max(ecommerce$Discount),]
knitr::kable(table(discount$Discount))
Var1 Freq
0 620
0.1 9
0.15 8
0.2 499
0.3 23
0.32 1
0.4 28
0.45 4
0.5 8
0.6 18
0.7 63
0.8 41

Explanation: Berdasarkan data di atas, sebagian besar jumlah data produk yang dijual adalah tanpa diberikannya diskon

3.5 Business Questions

Kategori mana yang menghasilkan keuntungan tertinggi?

xtabs(Profit ~ Category, ecommerce)
#> Category
#>       Furniture Office Supplies      Technology 
#>       -780.7927      13721.6223      12630.3885

Explanation: Kategori dari Office Supplies menghasilkan keuntungan tertinggi sebesar 13721.6223

Kategori mana yang memiliki nilai penjualan tertinggi?

xtabs(Sales ~ Category, ecommerce)
#> Category
#>       Furniture Office Supplies      Technology 
#>        84855.70        89967.90        98483.68

Explanation: Penjualan dari kategori ‘Technology’ nilai penjualan tertinggi yaitu sebesar 98483.68

Di mana letak transaksi dengan kerugian terbesar?

ecommerce[ecommerce$Profit==min(ecommerce$Profit),]

Explanation: Kerugian besar terjadi ketika jumlah profit menghasilkan nilai minus terbesar, sehingga dapat disimpulkan kerugian terbesar terjadi pada Sub.Category Machines, Category Technology, dengan diskon 50%, yang dijual seharga 7999.98, dan terjadi pada tanggal 11 April 2020

Pada segment apa yang memiliki nilai keuntungan terbesar terjadi?

xtabs(Profit~Segment,ecommerce)
#> Segment
#>    Consumer   Corporate Home Office 
#>   13597.689    2593.242    9380.288

Explanation: Nilai keuntungan terjadi pada segment Consumer dengan laba 13597.689

Berapa nilai keuntungan berdasarkan jenis pengiriman dan segment?

xtabs(Profit~Segment+Ship.Mode, ecommerce)
#>              Ship.Mode
#> Segment       First Class   Same Day Second Class Standard Class
#>   Consumer      2267.5666  1290.9605    1351.6191      8687.5423
#>   Corporate      891.8486 -2909.5271    3553.0749      1057.8457
#>   Home Office   1035.3848  1457.4782    1833.1047      5054.3198

Explanation: Berdasarkan nilai keuntungan, jenis pengiriman dengan keuntungan terbesar mayoritas memilih jenis pengiriman Standard Class

Penjualan dengan kuantitas tertinggi berdasarkan Sub.Category

xtabs(Profit~Sub.Category, ecommerce)
#> Sub.Category
#> Accessories  Appliances         Art     Binders   Bookcases      Chairs 
#>   7932.0722   3049.5318    810.9591    545.1004   -861.2908   2919.5956 
#>     Copiers   Envelopes   Fasteners Furnishings      Labels    Machines 
#>   2684.9517    326.6031    143.5404    815.3838    935.7690   -812.1752 
#>       Paper      Phones     Storage    Supplies      Tables 
#>   5019.2334   2825.5398   2878.9122     11.9729  -3654.4813

Explanation: Penjualan dengan kuantitas tertinggi terdapat pada Sub-Category Accessories

5. Conclusion

Conclusion:

  1. Sejak tahun 2020 dalam setahun US E-Commerce telah menjual total 37873 items dengan total keuntungan 25571.2181. US E-Commerce ini menjual produk dengan 3 kategori utama: Furniture, Office Supplies, dan Technology. Dari kategori ini, Perlengkapan Kantor atau ‘Office Supplies’ menghasilkan keuntungan tertinggi dengan nilai 13721.6223 dibandingkan dengan yang lain. Akan tetapi ironisnya, kerugian tertinggi dengan jumlah -3839.99 yang terjadi pada tanggal 11 April 2020 ditemukan berasal dari kategori ‘Technology’. Selain itu, kategori Teknologi juga memiliki total harga jual tertinggi dengan nilai 98483.68.

  2. Pembeli yang membeli produk di US E-Commerce berasal dari segmen yang berbeda-beda, seperti: Consumer, Corporate dan Home Office. Segmen ‘Consumer’ memberikan jumlah keuntungan tertinggi dibandingkan dengan lainnya dengan 134119,21.

  3. Pilihan pengiriman terdiri dari 4 jenis : First Class, Same day, Second class, dan Standard class. Berdasarkan data, dari semua segmen, sebagian besar memilih Standard Class sebagai pilihan pengirimannya. Segmen ‘Consumer’ merupakan segmen paling tinggi yang memilih mode Standard Class dan First Class, disusul oleh segmen ‘Corporate’ yang merupakan segmen paling tinggi memilih mode Second Class, kemudian mode Same Day adalah mode yang paling banyak dipilih oleh segmen Home Office.

6. Recommendation

Recommendation

  • Dari perhitungan di atas, menunjukkan bahwa ‘Technology’ menjual dengan nilai penjualan tertinggi tetapi kerugian maksimal yang kontradiktif juga berasal dari kategori Teknologi. Hal ini disebabkan karena diskon yang diberikan pada kategori teknologi terlalu tinggi (50%) tanpa memikirkan profitnya. Hitung dua kali sebelum memutuskan berapa persentase diskon yang akan diberikan.

  • Perlu meningkatkan target pasar di segmen ‘Corporate’ dan segmen ‘Home Office’, kita dapat memberi pelanggan lebih banyak diskon dengan mengambil kembali profit untuk Ecommerce. Berdasarkan perhitungan, pembeli paling banyak membeli dari kategori ‘Office Supplies’ dengan pembelian hampir dua hingga tiga kali lipat dari kategori lainnya.