Global Superstore adalah sebuah perusahaan di Amerika Serikat yang bergerak di bidang online store, mereka memiliki dataset yang telah dikumpulkan selama 4 tahun, dataset ini berisi tentang data historis tranksaksi pelanggan. Dengan menggunakan dataset tersebut, kita akan melakukan analisa data untuk menjawab berbagai pertanyaan bisnis sebagai berikut:
Golongan pelanggan yang mana yang menghasilkan sales yang paling tinggi?
Di City yang mana yang memiliki pelanggan terbanyak?
Sub-Kategori barang apa yang paling laku berdasarkan sales?
Jumlah pesanan paling banyak terjadi pada hari apa dan bagaimana trendnya?
Perusahaan ingin mengetahui dan berencana untuk memberikan hadiah apresiasi kepada 10 pelanggan yang nilai salesnya paling besar, siapakah pelanggan tersebut?
Bagaimana dengan jumlah tranksaksi setiap bulannya? apakah ada kecenderungan tertentu?
Berapakah rata-rata lama pengiriman barang berdasarkan tiap jenis pengirimannya?
Dan kemudian setelah menjawab pertanyaan tersebut, berikanlah rekomendasi bisnis berdasarkan data yang telah dianalisa.
Pertama kita akan melakukan import data.
Kemudian kita akan melakukan inspeksi cepat terhadap data kita.
## Rows: 9,800
## Columns: 18
## $ Row.ID <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1…
## $ Order.ID <chr> "CA-2017-152156", "CA-2017-152156", "CA-2017-138688", "U…
## $ Order.Date <chr> "08/11/2017", "08/11/2017", "12/06/2017", "11/10/2016", …
## $ Ship.Date <chr> "11/11/2017", "11/11/2017", "16/06/2017", "18/10/2016", …
## $ Ship.Mode <chr> "Second Class", "Second Class", "Second Class", "Standar…
## $ Customer.ID <chr> "CG-12520", "CG-12520", "DV-13045", "SO-20335", "SO-2033…
## $ Customer.Name <chr> "Claire Gute", "Claire Gute", "Darrin Van Huff", "Sean O…
## $ Segment <chr> "Consumer", "Consumer", "Corporate", "Consumer", "Consum…
## $ Country <chr> "United States", "United States", "United States", "Unit…
## $ City <chr> "Henderson", "Henderson", "Los Angeles", "Fort Lauderdal…
## $ State <chr> "Kentucky", "Kentucky", "California", "Florida", "Florid…
## $ Postal.Code <int> 42420, 42420, 90036, 33311, 33311, 90032, 90032, 90032, …
## $ Region <chr> "South", "South", "West", "South", "South", "West", "Wes…
## $ Product.ID <chr> "FUR-BO-10001798", "FUR-CH-10000454", "OFF-LA-10000240",…
## $ Category <chr> "Furniture", "Furniture", "Office Supplies", "Furniture"…
## $ Sub.Category <chr> "Bookcases", "Chairs", "Labels", "Tables", "Storage", "F…
## $ Product.Name <chr> "Bush Somerset Collection Bookcase", "Hon Deluxe Fabric …
## $ Sales <dbl> 261.9600, 731.9400, 14.6200, 957.5775, 22.3680, 48.8600,…
## Row.ID Order.ID Order.Date Ship.Date Ship.Mode
## 0 0 0 0 0
## Customer.ID Customer.Name Segment Country City
## 0 0 0 0 0
## State Postal.Code Region Product.ID Category
## 0 11 0 0 0
## Sub.Category Product.Name Sales
## 0 0 0
Melakukan konversi tipe data yang tidak tepat ke tipe data yang tepat.
store <- store %>%
mutate(
Order.Date = dmy(Order.Date),
Ship.Date = dmy(Ship.Date),
Ship.Mode = as.factor(Ship.Mode),
Segment = as.factor(Segment),
Country = as.factor(Country),
City = as.factor(City),
State = as.factor(State),
Region = as.factor(Region),
Category = as.factor(Category),
Sub.Category = as.factor(Sub.Category)
)
glimpse(store)## Rows: 9,800
## Columns: 18
## $ Row.ID <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1…
## $ Order.ID <chr> "CA-2017-152156", "CA-2017-152156", "CA-2017-138688", "U…
## $ Order.Date <date> 2017-11-08, 2017-11-08, 2017-06-12, 2016-10-11, 2016-10…
## $ Ship.Date <date> 2017-11-11, 2017-11-11, 2017-06-16, 2016-10-18, 2016-10…
## $ Ship.Mode <fct> Second Class, Second Class, Second Class, Standard Class…
## $ Customer.ID <chr> "CG-12520", "CG-12520", "DV-13045", "SO-20335", "SO-2033…
## $ Customer.Name <chr> "Claire Gute", "Claire Gute", "Darrin Van Huff", "Sean O…
## $ Segment <fct> Consumer, Consumer, Corporate, Consumer, Consumer, Consu…
## $ Country <fct> United States, United States, United States, United Stat…
## $ City <fct> Henderson, Henderson, Los Angeles, Fort Lauderdale, Fort…
## $ State <fct> Kentucky, Kentucky, California, Florida, Florida, Califo…
## $ Postal.Code <int> 42420, 42420, 90036, 33311, 33311, 90032, 90032, 90032, …
## $ Region <fct> South, South, West, South, South, West, West, West, West…
## $ Product.ID <chr> "FUR-BO-10001798", "FUR-CH-10000454", "OFF-LA-10000240",…
## $ Category <fct> Furniture, Furniture, Office Supplies, Furniture, Office…
## $ Sub.Category <fct> Bookcases, Chairs, Labels, Tables, Storage, Furnishings,…
## $ Product.Name <chr> "Bush Somerset Collection Bookcase", "Hon Deluxe Fabric …
## $ Sales <dbl> 261.9600, 731.9400, 14.6200, 957.5775, 22.3680, 48.8600,…
## Row.ID Order.ID Order.Date Ship.Date
## Min. : 1 Length:9800 Min. :2015-01-03 Min. :2015-01-07
## 1st Qu.:2451 Class :character 1st Qu.:2016-05-24 1st Qu.:2016-05-27
## Median :4900 Mode :character Median :2017-06-26 Median :2017-06-29
## Mean :4900 Mean :2017-05-01 Mean :2017-05-05
## 3rd Qu.:7350 3rd Qu.:2018-05-15 3rd Qu.:2018-05-19
## Max. :9800 Max. :2018-12-30 Max. :2019-01-05
##
## Ship.Mode Customer.ID Customer.Name Segment
## First Class :1501 Length:9800 Length:9800 Consumer :5101
## Same Day : 538 Class :character Class :character Corporate :2953
## Second Class :1902 Mode :character Mode :character Home Office:1746
## Standard Class:5859
##
##
##
## Country City State Postal.Code
## United States:9800 New York City: 891 California :1946 Min. : 1040
## Los Angeles : 728 New York :1097 1st Qu.:23223
## Philadelphia : 532 Texas : 973 Median :58103
## San Francisco: 500 Pennsylvania: 582 Mean :55273
## Seattle : 426 Washington : 504 3rd Qu.:90008
## Houston : 374 Illinois : 483 Max. :99301
## (Other) :6349 (Other) :4215 NA's :11
## Region Product.ID Category Sub.Category
## Central:2277 Length:9800 Furniture :2078 Binders :1492
## East :2785 Class :character Office Supplies:5909 Paper :1338
## South :1598 Mode :character Technology :1813 Furnishings: 931
## West :3140 Phones : 876
## Storage : 832
## Art : 785
## (Other) :3546
## Product.Name Sales
## Length:9800 Min. : 0.444
## Class :character 1st Qu.: 17.248
## Mode :character Median : 54.490
## Mean : 230.769
## 3rd Qu.: 210.605
## Max. :22638.480
##
## Rows: 9,800
## Columns: 18
## $ Row.ID <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1…
## $ Order.ID <chr> "CA-2017-152156", "CA-2017-152156", "CA-2017-138688", "U…
## $ Order.Date <date> 2017-11-08, 2017-11-08, 2017-06-12, 2016-10-11, 2016-10…
## $ Ship.Date <date> 2017-11-11, 2017-11-11, 2017-06-16, 2016-10-18, 2016-10…
## $ Ship.Mode <fct> Second Class, Second Class, Second Class, Standard Class…
## $ Customer.ID <chr> "CG-12520", "CG-12520", "DV-13045", "SO-20335", "SO-2033…
## $ Customer.Name <chr> "Claire Gute", "Claire Gute", "Darrin Van Huff", "Sean O…
## $ Segment <fct> Consumer, Consumer, Corporate, Consumer, Consumer, Consu…
## $ Country <fct> United States, United States, United States, United Stat…
## $ City <fct> Henderson, Henderson, Los Angeles, Fort Lauderdale, Fort…
## $ State <fct> Kentucky, Kentucky, California, Florida, Florida, Califo…
## $ Postal.Code <int> 42420, 42420, 90036, 33311, 33311, 90032, 90032, 90032, …
## $ Region <fct> South, South, West, South, South, West, West, West, West…
## $ Product.ID <chr> "FUR-BO-10001798", "FUR-CH-10000454", "OFF-LA-10000240",…
## $ Category <fct> Furniture, Furniture, Office Supplies, Furniture, Office…
## $ Sub.Category <fct> Bookcases, Chairs, Labels, Tables, Storage, Furnishings,…
## $ Product.Name <chr> "Bush Somerset Collection Bookcase", "Hon Deluxe Fabric …
## $ Sales <dbl> 261.9600, 731.9400, 14.6200, 957.5775, 22.3680, 48.8600,…
Golongan pelanggan yang mana yang menghasilkan rata-rata sales yang paling tinggi?
store_cat_sales <- store %>%
group_by(Segment) %>%
summarise(avg_sales = sum(Sales)) %>%
ungroup() %>%
mutate(label2 = glue("Average Sales: {comma(avg_sales)}"))
plot1 <- ggplot(data = store_cat_sales, mapping = aes(x = Segment, y = avg_sales, text = label2))+
geom_col(aes(fill = Segment))+
labs(title = "Rata-rata Sales Berdasarkan Golongan Pelanggan",
x = "Golongan Pelanggan",
y = NULL)
ggplotly(plot1, tooltip = "label2")Jawaban: Golongan Consumer adalah golongan pelanggan yang memberikan sales paling tinggi.
Di City yang mana yang memiliki pelanggan terbanyak?
store_most_city <- store[match(unique(store$Customer.ID), store$Customer.ID),]
store_most_city <- store_most_city %>%
group_by(City) %>%
summarise(cust_count= n()) %>%
ungroup() %>%
arrange(-cust_count) %>%
head(10) %>%
mutate(label3 = glue("City: {City}
Jumlah Pelanggan: {cust_count}"))
plot2 <- ggplot(data = store_most_city, mapping = aes(x = cust_count, y = reorder(City, cust_count), text = label3))+
geom_col(aes(fill = cust_count))+
labs(title = "Jumlah Pelanggan Berdasarkan Kota",
x = "Jumlah Pelanggan",
y = NULL,
fill = "Jumlah Pelanggan")+
scale_fill_gradient(low = "gray", high = "deepskyblue2")
ggplotly(plot2, tooltip = "label3")Jawaban: Pelanggan paling banyak berasal dari kota Newyork City.
Sub-Kategori barang apa yang paling laku berdasarkan sales?
store_most_cat <- store %>%
group_by(Sub.Category) %>%
summarise(Terjual = sum(Sales)) %>%
arrange(-Terjual) %>%
ungroup %>%
head(10) %>%
mutate(label4 = glue("Sub-Kategori: {Sub.Category}
Sales: {comma(Terjual)}"))
plot3 <- ggplot(data = store_most_cat, mapping = aes(x = Terjual, y = reorder(Sub.Category, Terjual), text = label4))+
geom_col(aes(fill = Terjual))+
labs(title = "Jumlah Sales Berdasarkan Sub-Kategori",
x = "Jumlah Sales",
y = NULL,
fill = "Jumlah Sales")+
scale_fill_gradient(low = "gray", high = "deepskyblue2")+
scale_x_continuous(labels = label_comma())
ggplotly(plot3, tooltip = "label4")Jawaban: Sub-Kategori yang paling laku berdasarkan jumlah sales adalah Phones, Diikuti oleh Chairs dengan perbedaan yang cukup tipis.
Jumlah pesanan paling banyak terjadi pada hari apa dan bagaimana trendnya?
store_days <- store %>%
mutate(
day = wday(Order.Date, label=T, abbr = F),
day = as.factor(day)) %>%
group_by(day) %>%
summarise(order_count = n()) %>%
mutate(label5 = glue("Day: {day}
Jumlah pesanan: {order_count}"))
plot4 <- ggplot(store_days, mapping = aes(x = day, y = order_count, group = 1))+
geom_line(col = "deepskyblue2")+
geom_point(aes(text = label5), col="black") +
scale_y_continuous(labels = comma)+
labs(title = "Jumlah Pesanan Berdasarkan Hari",
x = "Hari",
y = "Jumlah Pesanan",
fill = "Jumlah Sales")## Warning in geom_point(aes(text = label5), col = "black"): Ignoring unknown
## aesthetics: text
Jawaban: Jumlah pesanan mencapai titik tertinggi pada hari selasa, dan akan menurun drastis menjelang hari kamis, dan akan naik lagi menjelang sabtu.
Perusahaan ingin mengetahui dan berencana untuk memberikan hadiah apresiasi kepada 10 pelanggan yang nilai salesnya paling besar, siapakah pelanggan tersebut?
Jawaban: Berikut adalah 10 pelanggan yang memiliki nilai sales paling besar.
store_top10_cust <- store %>%
group_by(Customer.ID) %>%
summarise(sum_sales = sum(Sales)) %>%
ungroup() %>%
arrange(-sum_sales) %>%
head(10)
store_top10_cust <- distinct(inner_join(store, store_top10_cust, by= "Customer.ID"), Customer.ID, .keep_all = T)
store_top10_cust <- store_top10_cust %>%
select(Customer.Name, Segment, City, sum_sales) %>%
arrange(-sum_sales)
store_top10_custBagaimana dengan jumlah tranksaksi setiap bulannya? apakah ada kecenderungan tertentu?
store_month <- store %>%
mutate(
month = month(Order.Date, label = T, abbr = T)
) %>%
group_by(month) %>%
summarise(Jumlah_Tranksaksi = n()) %>%
ungroup() %>%
mutate(
label6 = glue("Month: {month}
Jumlah Tranksaksi: {Jumlah_Tranksaksi}")
)
plot6 <- ggplot(store_month, mapping = aes(x = month, y = Jumlah_Tranksaksi, group = 1))+
geom_line(col = "deepskyblue2")+
geom_point(aes(text = label6), col="black") +
scale_y_continuous(labels = comma)+
labs(title="Jumlah Tranksaksi Berdasarkan Bulan",
x = "Bulan",
y = "Jumlah Tranksaksi",
fill = "Jumlah Tranksaksi")## Warning in geom_point(aes(text = label6), col = "black"): Ignoring unknown
## aesthetics: text
Jawaban: Jumlah tranksaksi cenderung mengalami penurunan drastis setiap menjelang tahun baru, dan berada di titik terendahnya di bulan februari, dan cenderung mengalami penurunan juga setiap menjelang bulan oktober, bulan november cenderung memiliki jumlah tranksaksi yang lebih banyak daripada biasanya.
Berapakah rata-rata lama pengiriman barang berdasarkan tiap jenis pengirimannya?
store_shipduration <- store %>%
mutate(
ship.duration = difftime(Ship.Date, Order.Date, units = "days")
) %>%
group_by(Ship.Mode) %>%
summarise(avr_duration = as.numeric(round(mean(ship.duration),2))) %>%
ungroup() %>%
mutate(
label7 = glue("Ship Mode: {Ship.Mode}
Rata-rata Durasi:{avr_duration}")
)
plot7 <- ggplot(store_shipduration, mapping = aes(x = avr_duration, y = reorder(Ship.Mode, avr_duration), text = label7))+
geom_col(aes(fill = avr_duration))+
labs(title = "Rata-rata Durasi Pengiriman Berdasarkan Jenis Pengiriman",
x = "Rata-Rata Hari",
y = NULL,
fill = "Rata-rata Hari")+
scale_fill_gradient(low = "gray", high = "deepskyblue2")
ggplotly(plot7, tooltip = "label7")Jawaban: Yang paling cepat adalah yang jenis Same Day, dan yang paling lambat adalah yang jenis Standard Class yakni 5.01 hari, disusul oleh Second Class 3.25 hari, dan First Class 2.18 hari.
##Kesimpulan
Jenis pengiriman (Ship.Mode) yang paling sering digunakan adalah jenis Standard Class, kemungkinan besar disebabkan oleh faktor biaya yang lebih murah.
Segmentasi pelanggan didominasi oleh kalangan Consumer sekaligus menjadikan kalangan Consumer sebagai kalangan yang memiliki nilai sales paling tinggi di antara kalangan yang lainnya.
Pelanggan sebagian besar (top 4) berasal dari kota Newyork City, Los Angeles, Philadelphia, dan San Fransisco.
Barang yang memiliki nilai sales terbesar adalah Phone, dan Chairs, meski begitu barang yang paling sering laku adalah Binders, dan Paper.
Jumlah pesanan akan cenderung menurun setiap menjelang hari Kamis.
Jumlah tranksaksi cenderung mengalami penurunan drastis setiap menjelang tahun baru, dan berada di titik terendahnya di bulan februari, dan cenderung mengalami penurunan juga setiap menjelang bulan oktober, bulan november cenderung memiliki jumlah tranksaksi yang lebih banyak daripada biasanya.
Kampanye & Event di Awal Tahun, Jumlah tranksaksi di setiap awal tahun selalu cenderung jauh lebih sedikit dibanding bulan-bulan yang lainnya, sebaiknya mempertimbangkan untuk mengadakan event atau promo seperti gratis ongkir, atau cashback di bulan Januari dan Februari yang cenderung sepi tranksaksinya.
Event Hari Kamis, Jumlah tranksaksi cenderung menurun drastis setiap menjelang hari kamis, pengadaan promo sebaiknya dilakukan di hari kamis untuk menstabilkan jumlah tranksaksi di hari tersebut, agar kegiatan operasional bisa lebih stabil.
Produk Unggulan dan Bundling, berfokus pada barang yang paling sering laku, yaitu binder, paper, phones, dan chairs, dan padukan barang yang paling sering terjual dengan barang yang lebih jarang terjual dengan menjualnya dengan harga promo dalam bentuk bundle/paket.