Email: sherlytaurinsiri@gmail.com
RPubs: https://rpubs.com/sherlytaurin/
Andikan Anda adalah seorang Manajer dibidang projek Data Scince, ingin melakukan analisis perilaku pelanggan menggunakan data transaksi perusahaan ritel online di Inggris (yang memperoleh dataset dalam kurung waktu antara 01/12/2010 dan 09/12/2011). Diketahui dari data tersebut banyak pelanggan perusahaan adalah grosir (pemasok). Selain itu, ada beberapa hal penting yang perlu diperhatikan mengenai data tersebut adalah sebagai berikut:
| Variabel | Deskripsi |
|---|---|
| invoice_no | Nomor invoice terdiri dari 6 digit unik untuk setiap transaksi. Jika diawali dengan huruf C, ini menandakan bahwa transaksi tersebut berstatus Batal |
| stock_code | Kode produk yang unik untuk setiap produk, terdiri dari 5 digit angka yang unik untuk setiap produk (Deskripsi Nama Produk). |
| quantity | Jumlah produk yang dibeli |
| invoice_date | Tanggal dan waktu transaksi |
| unit_price | Harga produk per unit |
| customer_id | ID Pelanggan terdiri dari 5 digit angka yang unik untuk setiap pelanggan. |
| country | Negara pelanggan |
Anda dapat mengunduh data yang digunakan dalam kasus ini di Google Classrom atau klik Retail.xlsx dan Retail.rds.
Import kedua data tersebut ke Rstudio Anda sesuai dengan jenis file masing-masing (Proses import mana yang lebih baik menurut Anda?).
#setwd("C:/Users/vferd/Documents/Sherly/Campus/Semester 3/Algoritma/UAS")
Data <- readRDS("Retail.rds")
head(Data,3)## InvoiceNo StockCode Description Quantity
## 1 536365 85123A WHITE HANGING HEART T-LIGHT HOLDER 6
## 2 536365 71053 WHITE METAL LANTERN 6
## 3 536365 84406B CREAM CUPID HEARTS COAT HANGER 8
## InvoiceDate UnitPrice CustomerID Country
## 1 2010-12-01 08:26:00 2.55 17850 United Kingdom
## 2 2010-12-01 08:26:00 3.39 17850 United Kingdom
## 3 2010-12-01 08:26:00 2.75 17850 United Kingdom
## # A tibble: 3 x 8
## InvoiceNo StockCode Description Quantity InvoiceDate UnitPrice
## <chr> <chr> <chr> <dbl> <dttm> <dbl>
## 1 536365 85123A WHITE HANG~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE META~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPI~ 8 2010-12-01 08:26:00 2.75
## # ... with 2 more variables: CustomerID <dbl>, Country <chr>
Argumen Anda: Menurut saya proses import yang lebih baik adalah readRDS/ Retail.rds karena untuk mengimportnya tidak diperlukan package lagi lantaran function yang ada sudah berasal dari R base. Sehingga proses Import akan lebih cepat dibandingkan menggunakan file xlsx yang membutuhkan package readxl
Ubah nama variabel data tersebut agar lebih mudah dipelajari oleh pembaca.
library(dplyr)
Data <- Data %>%
rename("No_Invoice" = InvoiceNo,
"Kode_Barang" = StockCode,
"Nama_Barang" = Description,
"Kuantitas" = Quantity,
"Tanggal_Transaksi" = InvoiceDate,
"Harga_Satuan" = UnitPrice,
"ID_Customer" = CustomerID,
"Negara" = Country)
Data## # A tibble: 541,909 x 8
## No_Invoice Kode_Barang Nama_Barang Kuantitas Tanggal_Transaksi Harga_Satuan
## <chr> <chr> <chr> <dbl> <dttm> <dbl>
## 1 536365 85123A WHITE HANG~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE META~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPI~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UN~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY~ 6 2010-12-01 08:26:00 3.39
## 6 536365 22752 SET 7 BABU~ 2 2010-12-01 08:26:00 7.65
## 7 536365 21730 GLASS STAR~ 6 2010-12-01 08:26:00 4.25
## 8 536366 22633 HAND WARME~ 6 2010-12-01 08:28:00 1.85
## 9 536366 22632 HAND WARME~ 6 2010-12-01 08:28:00 1.85
## 10 536367 84879 ASSORTED C~ 32 2010-12-01 08:34:00 1.69
## # ... with 541,899 more rows, and 2 more variables: ID_Customer <dbl>,
## # Negara <chr>
Argumen Anda: Saya mengganti semua nama variabel menjadi bahasa yang biasa digunakan di Indonesia untuk mempermudah dibaca oleh pembaca apabila pembaca orang Indonesia.
Lakukan pemeriksaan struktur data untuk mengubah jenis kumpulan data (jika ada yang perlu diubah).
## tibble [541,909 x 8] (S3: tbl_df/tbl/data.frame)
## $ No_Invoice : chr [1:541909] "536365" "536365" "536365" "536365" ...
## $ Kode_Barang : chr [1:541909] "85123A" "71053" "84406B" "84029G" ...
## $ Nama_Barang : chr [1:541909] "WHITE HANGING HEART T-LIGHT HOLDER" "WHITE METAL LANTERN" "CREAM CUPID HEARTS COAT HANGER" "KNITTED UNION FLAG HOT WATER BOTTLE" ...
## $ Kuantitas : num [1:541909] 6 6 8 6 6 2 6 6 6 32 ...
## $ Tanggal_Transaksi: POSIXct[1:541909], format: "2010-12-01 08:26:00" "2010-12-01 08:26:00" ...
## $ Harga_Satuan : num [1:541909] 2.55 3.39 2.75 3.39 3.39 7.65 4.25 1.85 1.85 1.69 ...
## $ ID_Customer : num [1:541909] 17850 17850 17850 17850 17850 ...
## $ Negara : chr [1:541909] "United Kingdom" "United Kingdom" "United Kingdom" "United Kingdom" ...
data.frame(
invoice_unique = Data$No_Invoice %>% unique() %>% length(),
kode_barang_unique = Data$Kode_Barang %>% unique() %>% length(),
nama_barang_unique = Data$Nama_Barang %>% unique() %>% length(),
negara_unique = Data$Negara %>% unique() %>% length(),
customer_unique = Data$ID_Customer %>% unique() %>% length()
)## invoice_unique kode_barang_unique nama_barang_unique negara_unique
## 1 25900 4070 4212 38
## customer_unique
## 1 4373
Data$Negara <- as.factor(Data$Negara)
Data$Kuantitas <- as.integer(Data$Kuantitas)
Data$ID_Customer <- as.integer(Data$ID_Customer)
Data## # A tibble: 541,909 x 8
## No_Invoice Kode_Barang Nama_Barang Kuantitas Tanggal_Transaksi Harga_Satuan
## <chr> <chr> <chr> <int> <dttm> <dbl>
## 1 536365 85123A WHITE HANG~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE META~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPI~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UN~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY~ 6 2010-12-01 08:26:00 3.39
## 6 536365 22752 SET 7 BABU~ 2 2010-12-01 08:26:00 7.65
## 7 536365 21730 GLASS STAR~ 6 2010-12-01 08:26:00 4.25
## 8 536366 22633 HAND WARME~ 6 2010-12-01 08:28:00 1.85
## 9 536366 22632 HAND WARME~ 6 2010-12-01 08:28:00 1.85
## 10 536367 84879 ASSORTED C~ 32 2010-12-01 08:34:00 1.69
## # ... with 541,899 more rows, and 2 more variables: ID_Customer <int>,
## # Negara <fct>
Argumen Anda: Berdasarkan pemeriksaan struktur data, semua strukturnya sudah sesuai. Tetapi dengan mencari total variabelnya, country hanya berjumlah 38 sehingga cocok untuk diubah menjadi factor. Karena datanya sudah pasti seperti variabel tetap.
Pembersihan data atau disebut juga data scrubbing adalah proses menganalisis kualitas data dengan cara mengubah. Anda sebagai Manajer juga dapat memperbaiki atau menghapus data tersebut. Beberapa hal yang mungkin dilakukan dalam projek ini adalah:
Cancelled_Orders <- Data %>% filter(grepl("C", Data$No_Invoice))
Data <- Data %>%
filter(!grepl("C", Data$No_Invoice))
Data## # A tibble: 532,621 x 8
## No_Invoice Kode_Barang Nama_Barang Kuantitas Tanggal_Transaksi Harga_Satuan
## <chr> <chr> <chr> <int> <dttm> <dbl>
## 1 536365 85123A WHITE HANG~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE META~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPI~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UN~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY~ 6 2010-12-01 08:26:00 3.39
## 6 536365 22752 SET 7 BABU~ 2 2010-12-01 08:26:00 7.65
## 7 536365 21730 GLASS STAR~ 6 2010-12-01 08:26:00 4.25
## 8 536366 22633 HAND WARME~ 6 2010-12-01 08:28:00 1.85
## 9 536366 22632 HAND WARME~ 6 2010-12-01 08:28:00 1.85
## 10 536367 84879 ASSORTED C~ 32 2010-12-01 08:34:00 1.69
## # ... with 532,611 more rows, and 2 more variables: ID_Customer <int>,
## # Negara <fct>
Argumen Anda: Diketahui ada 9.288 transaksi yang dibatalkan dilihat dari Invoicenya. Dengan itu saya menghapus data yang dibatalkan ini. Sisa datanya menjadi 532621 dari 541909
## # A tibble: 3 x 8
## No_Invoice Kode_Barang Nama_Barang Kuantitas Tanggal_Transaksi Harga_Satuan
## <chr> <chr> <chr> <int> <dttm> <dbl>
## 1 A563185 B Adjust bad~ 1 2011-08-12 14:50:00 11062.
## 2 A563186 B Adjust bad~ 1 2011-08-12 14:51:00 -11062.
## 3 A563187 B Adjust bad~ 1 2011-08-12 14:52:00 -11062.
## # ... with 2 more variables: ID_Customer <int>, Negara <fct>
## # A tibble: 532,618 x 8
## No_Invoice Kode_Barang Nama_Barang Kuantitas Tanggal_Transaksi Harga_Satuan
## <chr> <chr> <chr> <int> <dttm> <dbl>
## 1 536365 85123A WHITE HANG~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE META~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPI~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UN~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY~ 6 2010-12-01 08:26:00 3.39
## 6 536365 22752 SET 7 BABU~ 2 2010-12-01 08:26:00 7.65
## 7 536365 21730 GLASS STAR~ 6 2010-12-01 08:26:00 4.25
## 8 536366 22633 HAND WARME~ 6 2010-12-01 08:28:00 1.85
## 9 536366 22632 HAND WARME~ 6 2010-12-01 08:28:00 1.85
## 10 536367 84879 ASSORTED C~ 32 2010-12-01 08:34:00 1.69
## # ... with 532,608 more rows, and 2 more variables: ID_Customer <int>,
## # Negara <fct>
Argumen Anda: Faktur / No Invoice yang valid terdiri dari 6 angka, tetapi saat di chek, terdapat 3 data yang Invoicenya lebih dari 6 digit sehingga data itu tidak valid dan saya hapus. Sehingga data akan berkurang dari 532621 menjadi 532618.
## [1] 1336
## # A tibble: 531,282 x 8
## No_Invoice Kode_Barang Nama_Barang Kuantitas Tanggal_Transaksi Harga_Satuan
## <chr> <chr> <chr> <int> <dttm> <dbl>
## 1 536365 85123A WHITE HANG~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE META~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPI~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UN~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY~ 6 2010-12-01 08:26:00 3.39
## 6 536365 22752 SET 7 BABU~ 2 2010-12-01 08:26:00 7.65
## 7 536365 21730 GLASS STAR~ 6 2010-12-01 08:26:00 4.25
## 8 536366 22633 HAND WARME~ 6 2010-12-01 08:28:00 1.85
## 9 536366 22632 HAND WARME~ 6 2010-12-01 08:28:00 1.85
## 10 536367 84879 ASSORTED C~ 32 2010-12-01 08:34:00 1.69
## # ... with 531,272 more rows, and 2 more variables: ID_Customer <int>,
## # Negara <fct>
Argumen Anda: Dalam transaksi, seharusnya Kuantitas > 0. Sedangkan pada data terdapat 1336 data yang kuantitasnya <=0 yang berarti tidak valid. Oleh karena itu data tersebut saya hapus (saya filter untuk mendapatkan data yang kuantitasnya > 0 ). Data berkurang 532618 menjadi 531282.
## [1] 1179
## # A tibble: 530,103 x 8
## No_Invoice Kode_Barang Nama_Barang Kuantitas Tanggal_Transaksi Harga_Satuan
## <chr> <chr> <chr> <int> <dttm> <dbl>
## 1 536365 85123A WHITE HANG~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE META~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPI~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UN~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY~ 6 2010-12-01 08:26:00 3.39
## 6 536365 22752 SET 7 BABU~ 2 2010-12-01 08:26:00 7.65
## 7 536365 21730 GLASS STAR~ 6 2010-12-01 08:26:00 4.25
## 8 536366 22633 HAND WARME~ 6 2010-12-01 08:28:00 1.85
## 9 536366 22632 HAND WARME~ 6 2010-12-01 08:28:00 1.85
## 10 536367 84879 ASSORTED C~ 32 2010-12-01 08:34:00 1.69
## # ... with 530,093 more rows, and 2 more variables: ID_Customer <int>,
## # Negara <fct>
Argumen Anda: Ada 1181 data Harga Satuan yang tidak valid, dengan itu saya memfilter data sehingga yang ditampilkan hanya data yang Harga Satuannya > 0 . Data berkurang dari 531282 menjadi 530103.
Data <- Data %>%
filter(nchar(Kode_Barang) >=5 )
Data %>% filter(nchar(Kode_Barang) > 6) %>%
select(Kode_Barang,Nama_Barang) %>%
distinct() %>%
arrange(Kode_Barang)## # A tibble: 16 x 2
## Kode_Barang Nama_Barang
## <chr> <chr>
## 1 15056bl EDWARDIAN PARASOL BLACK
## 2 15056BL EDWARDIAN PARASOL BLACK
## 3 AMAZONFEE AMAZON FEE
## 4 BANK CHARGES Bank Charges
## 5 DCGS0003 BOXED GLASS ASHTRAY
## 6 DCGS0004 HAYNES CAMPER SHOULDER BAG
## 7 DCGS0069 OOH LA LA DOGS COLLAR
## 8 DCGS0070 CAMOUFLAGE DOG COLLAR
## 9 DCGS0076 SUNJAR LED NIGHT NIGHT LIGHT
## 10 DCGSSBOY BOYS PARTY BAG
## 11 DCGSSGIRL GIRLS PARTY BAG
## 12 gift_0001_10 Dotcomgiftshop Gift Voucher £10.00
## 13 gift_0001_20 Dotcomgiftshop Gift Voucher £20.00
## 14 gift_0001_30 Dotcomgiftshop Gift Voucher £30.00
## 15 gift_0001_40 Dotcomgiftshop Gift Voucher £40.00
## 16 gift_0001_50 Dotcomgiftshop Gift Voucher £50.00
Data <- Data %>%
filter(!Kode_Barang %in% c("AMAZONFEE", "BANK CHARGES",
"gift_0001_10", "gift_0001_20",
"gift_0001_30", "gift_0001_40",
"gift_0001_50", "DCGSSBOY",
"DCGSSGIRL"))
Data## # A tibble: 527,734 x 8
## No_Invoice Kode_Barang Nama_Barang Kuantitas Tanggal_Transaksi Harga_Satuan
## <chr> <chr> <chr> <int> <dttm> <dbl>
## 1 536365 85123A WHITE HANG~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE META~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPI~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UN~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY~ 6 2010-12-01 08:26:00 3.39
## 6 536365 22752 SET 7 BABU~ 2 2010-12-01 08:26:00 7.65
## 7 536365 21730 GLASS STAR~ 6 2010-12-01 08:26:00 4.25
## 8 536366 22633 HAND WARME~ 6 2010-12-01 08:28:00 1.85
## 9 536366 22632 HAND WARME~ 6 2010-12-01 08:28:00 1.85
## 10 536367 84879 ASSORTED C~ 32 2010-12-01 08:34:00 1.69
## # ... with 527,724 more rows, and 2 more variables: ID_Customer <int>,
## # Negara <fct>
Argumen Anda: Saya menghapus Kode Barang yang digitnya kurang dari 5, karena sudah pasti salah kalau berdasarkan keterangan yang ada. Lalu saya mencari Kode barang yang digitnya lebih dari 5 dan menyesuaikannya dengan Nama Barang. Saya juga menggunakan distinct untuk menghilangkan data yang berganda. Dari data yang didapat, bisa dilihat ada beberapa Kode Barang yang bukan menyatakan Nama Barang yang dijual. Kode Barang itulah yang saya hapus. Sehingga data berkurang dari 530103 menjadi 527734.
data.frame(
kode_barang_unique = Data$Kode_Barang %>% unique() %>% length(),
nama_barang_unique = Data$Nama_Barang %>% unique() %>% length(),
kode_nama_unique = Data %>%
select(Kode_Barang, Nama_Barang) %>%
distinct() %>%
nrow()
)## kode_barang_unique nama_barang_unique kode_nama_unique
## 1 3905 3999 4141
barang <- Data %>%
arrange(desc(Tanggal_Transaksi)) %>%
select(Kode_Barang,Nama_Barang) %>%
distinct()
barang %>%
group_by(Kode_Barang) %>%
summarise(description_count=n()) %>%
ungroup() %>%
filter(description_count>1)## # A tibble: 217 x 2
## Kode_Barang description_count
## <chr> <int>
## 1 16156L 2
## 2 17107D 3
## 3 20622 2
## 4 20725 2
## 5 20914 2
## 6 21109 2
## 7 21112 2
## 8 21175 2
## 9 21232 2
## 10 21243 2
## # ... with 207 more rows
barang <- barang %>%
group_by(Kode_Barang) %>%
slice(1)
Data <- Data %>% left_join(barang , by="Kode_Barang") %>%
mutate(Nama_Barang=Nama_Barang.y) %>%
select(-Nama_Barang.x,-Nama_Barang.y)
data_frame(
stock_code_unique = Data$Kode_Barang %>% unique() %>% length(),
description_unique = Data$Nama_Barang %>% unique() %>% length(),
stock_description_unique = Data %>% select(Kode_Barang,Nama_Barang) %>% distinct() %>% nrow()
)## # A tibble: 1 x 3
## stock_code_unique description_unique stock_description_unique
## <int> <int> <int>
## 1 3905 3770 3905
nama <- Data %>%
arrange(desc(Tanggal_Transaksi)) %>%
select(Kode_Barang,Nama_Barang) %>%
distinct()
nama <- nama %>%
group_by(Nama_Barang) %>%
slice(1)
Data <- Data %>% left_join(nama , by="Nama_Barang") %>%
mutate(Kode_Barang=Kode_Barang.y) %>%
select(-Kode_Barang.x,-Kode_Barang.y)
data_frame(
stock_code_unique = Data$Kode_Barang %>% unique() %>% length(),
description_unique = Data$Nama_Barang %>% unique() %>% length(),
stock_description_unique = Data %>% select(Kode_Barang,Nama_Barang) %>% distinct() %>% nrow()
)## # A tibble: 1 x 3
## stock_code_unique description_unique stock_description_unique
## <int> <int> <int>
## 1 3770 3770 3770
Argumen Anda: Jumlah Kode barang seharusnya sama dengan Nama barang dan sama dengan kode barang digabung dengan nama barang. Tetapi saat di cek, jumlahnya berbeda. Maka ada Deskripsi Ganda disana.Saat di cek, terdapat 217 kode barang yang memiliki lebih dari 1 nama barang. Oleh karena itu harus disesuaikan dan dibersihkan dengan menyesuaikan nama barang dari setiap produk menggunakan nama barang pada transaksi terakhir setiap produk. Sehingga pada akhirnya Kode barang dan Nama barang masing masing ada 3370. Pada proses ini, setiap nama barang, memiliki kodenya masing masing dan tidak ada barang yang kodenya ganda, atau sebaliknya.
negara <- Data %>%
arrange(desc(Tanggal_Transaksi,ID_Customer)) %>%
select(ID_Customer, Negara) %>%
group_by(ID_Customer) %>%
slice(1)
Data <- Data %>%
select(-Negara) %>%
left_join(negara, by = "ID_Customer")
data_frame(
customer_unique = Data %>% select(ID_Customer) %>% distinct() %>% nrow(),
customer_negara_unique = Data %>% select(ID_Customer,Negara) %>% distinct() %>% nrow()
)## # A tibble: 1 x 2
## customer_unique customer_negara_unique
## <int> <int>
## 1 4335 4335
Argumen Anda: Berdasarkan informasi variabel Country, seharusnya setiap customer seharusnya memiliki 1 negara. Jika lebih dari 1, maka statusnya tidak valid. Bisa diasumsikan misalkan ada customer yang berpindah negara, sehingga kita bisa menyesuaikan negaranya berdasarkan negara terakhir customer tersebut melakukan transaksi. Sehingga setiap customer memiliki 1 negara.
library(lubridate)
Data <- Data %>% filter(ymd(as.Date(Data$Tanggal_Transaksi)) < ymd("2011-12-1"))
Data## # A tibble: 502,704 x 8
## No_Invoice Kuantitas Tanggal_Transaksi Harga_Satuan ID_Customer Nama_Barang
## <chr> <int> <dttm> <dbl> <int> <chr>
## 1 536365 6 2010-12-01 08:26:00 2.55 17850 CREAM HANG~
## 2 536365 6 2010-12-01 08:26:00 3.39 17850 WHITE MORO~
## 3 536365 8 2010-12-01 08:26:00 2.75 17850 CREAM CUPI~
## 4 536365 6 2010-12-01 08:26:00 3.39 17850 KNITTED UN~
## 5 536365 6 2010-12-01 08:26:00 3.39 17850 RED WOOLLY~
## 6 536365 2 2010-12-01 08:26:00 7.65 17850 SET 7 BABU~
## 7 536365 6 2010-12-01 08:26:00 4.25 17850 GLASS STAR~
## 8 536366 6 2010-12-01 08:28:00 1.85 17850 HAND WARME~
## 9 536366 6 2010-12-01 08:28:00 1.85 17850 HAND WARME~
## 10 536367 32 2010-12-01 08:34:00 1.69 13047 ASSORTED C~
## # ... with 502,694 more rows, and 2 more variables: Kode_Barang <chr>,
## # Negara <fct>
Argumen Anda: Data transaksi yang ada mulai dari 2010-12-01 sampai 2011-12-09. Karena data pada Desember 2011 tidak lengkap, maka lebih baik data di hapus dan transaksi yang digunakan adalah transaksi dari Desember 2010 sampai November 2011 atau dengan kata lain full satu tahun.
## row_of_data row_of_unique_data
## 1 502704 497681
## # A tibble: 497,681 x 8
## No_Invoice Kuantitas Tanggal_Transaksi Harga_Satuan ID_Customer Nama_Barang
## <chr> <int> <dttm> <dbl> <int> <chr>
## 1 536365 6 2010-12-01 08:26:00 2.55 17850 CREAM HANG~
## 2 536365 6 2010-12-01 08:26:00 3.39 17850 WHITE MORO~
## 3 536365 8 2010-12-01 08:26:00 2.75 17850 CREAM CUPI~
## 4 536365 6 2010-12-01 08:26:00 3.39 17850 KNITTED UN~
## 5 536365 6 2010-12-01 08:26:00 3.39 17850 RED WOOLLY~
## 6 536365 2 2010-12-01 08:26:00 7.65 17850 SET 7 BABU~
## 7 536365 6 2010-12-01 08:26:00 4.25 17850 GLASS STAR~
## 8 536366 6 2010-12-01 08:28:00 1.85 17850 HAND WARME~
## 9 536366 6 2010-12-01 08:28:00 1.85 17850 HAND WARME~
## 10 536367 32 2010-12-01 08:34:00 1.69 13047 ASSORTED C~
## # ... with 497,671 more rows, and 2 more variables: Kode_Barang <chr>,
## # Negara <fct>
Argumen Anda: Dengan membandingkan banyak data dan Data yang sudah di distinct, dapat dilihat terdapat data yang duplikat. Sehingga Data yang tidak memberikan informasi yang penting saha hapus.
Data <- Data %>%
mutate(Harga_Total = Kuantitas * Harga_Satuan) %>%
select(No_Invoice, Tanggal_Transaksi,ID_Customer,Negara,
Kode_Barang, Nama_Barang, Kuantitas, Harga_Satuan,
Harga_Total)
Data## # A tibble: 497,681 x 9
## No_Invoice Tanggal_Transaksi ID_Customer Negara Kode_Barang Nama_Barang
## <chr> <dttm> <int> <fct> <chr> <chr>
## 1 536365 2010-12-01 08:26:00 17850 Unite~ 85123A CREAM HANG~
## 2 536365 2010-12-01 08:26:00 17850 Unite~ 71053 WHITE MORO~
## 3 536365 2010-12-01 08:26:00 17850 Unite~ 84406B CREAM CUPI~
## 4 536365 2010-12-01 08:26:00 17850 Unite~ 84029G KNITTED UN~
## 5 536365 2010-12-01 08:26:00 17850 Unite~ 84029E RED WOOLLY~
## 6 536365 2010-12-01 08:26:00 17850 Unite~ 22752 SET 7 BABU~
## 7 536365 2010-12-01 08:26:00 17850 Unite~ 21730 GLASS STAR~
## 8 536366 2010-12-01 08:28:00 17850 Unite~ 22633 HAND WARME~
## 9 536366 2010-12-01 08:28:00 17850 Unite~ 22632 HAND WARME~
## 10 536367 2010-12-01 08:34:00 13047 Unite~ 84879 ASSORTED C~
## # ... with 497,671 more rows, and 3 more variables: Kuantitas <int>,
## # Harga_Satuan <dbl>, Harga_Total <dbl>
Argumen Anda: untuk mengekstrak total nilai transaksi / Harga Total, kita bisa menggunakan rumus $ quantity * price $ .
## No_Invoice Tanggal_Transaksi ID_Customer Negara
## 0 0 123540 0
## Kode_Barang Nama_Barang Kuantitas Harga_Satuan
## 0 0 0 0
## Harga_Total
## 0
## # A tibble: 374,141 x 9
## No_Invoice Tanggal_Transaksi ID_Customer Negara Kode_Barang Nama_Barang
## <chr> <dttm> <int> <fct> <chr> <chr>
## 1 536365 2010-12-01 08:26:00 17850 Unite~ 85123A CREAM HANG~
## 2 536365 2010-12-01 08:26:00 17850 Unite~ 71053 WHITE MORO~
## 3 536365 2010-12-01 08:26:00 17850 Unite~ 84406B CREAM CUPI~
## 4 536365 2010-12-01 08:26:00 17850 Unite~ 84029G KNITTED UN~
## 5 536365 2010-12-01 08:26:00 17850 Unite~ 84029E RED WOOLLY~
## 6 536365 2010-12-01 08:26:00 17850 Unite~ 22752 SET 7 BABU~
## 7 536365 2010-12-01 08:26:00 17850 Unite~ 21730 GLASS STAR~
## 8 536366 2010-12-01 08:28:00 17850 Unite~ 22633 HAND WARME~
## 9 536366 2010-12-01 08:28:00 17850 Unite~ 22632 HAND WARME~
## 10 536367 2010-12-01 08:34:00 13047 Unite~ 84879 ASSORTED C~
## # ... with 374,131 more rows, and 3 more variables: Kuantitas <int>,
## # Harga_Satuan <dbl>, Harga_Total <dbl>
Argumen Anda: Nilai yang hilang pada Data, terdapat pada ID_Customer dimana ada 131327 data ID Customer yang hilang. Sehingga data yang hilang ini dianggap tidak valid dan akan saya hapus.
Simpan data yang sudah Anda bersihkan ke dalam folder dalam format .json atau .xml atau .rds.
Import data yang sudah anda simpan pada Tugas 5, silahkan pilih salah satau jenis file saja. Kemudian, lakukan Analisis Data Eksplorasi dengan menggunakan Visualisasi yang telah Anda pelajari untuk menjawab setiap pertanyaan berikut:
## # A tibble: 3 x 9
## No_Invoice Tanggal_Transaksi ID_Customer Negara Kode_Barang Nama_Barang
## <chr> <dttm> <int> <fct> <chr> <chr>
## 1 536365 2010-12-01 08:26:00 17850 Unite~ 85123A CREAM HANG~
## 2 536365 2010-12-01 08:26:00 17850 Unite~ 71053 WHITE MORO~
## 3 536365 2010-12-01 08:26:00 17850 Unite~ 84406B CREAM CUPI~
## # ... with 3 more variables: Kuantitas <int>, Harga_Satuan <dbl>,
## # Harga_Total <dbl>
• Gunakan Bar-Chart untuk memperlihatkan berapa banyak pelanggan yang melakukan transaksi setiap bulan?
library(ggplot2)
library(zoo)
library(scales)
customer_bulanan <- Retail %>%
select(Tanggal_Transaksi, ID_Customer) %>%
mutate(yearmonth = format(Tanggal_Transaksi, format = "%y-%b-1"),
yearmonth = ymd(yearmonth)) %>%
select(ID_Customer, yearmonth) %>%
distinct() %>%
group_by(yearmonth) %>%
summarise(total = n()) %>%
ungroup()
customer_bulanan## # A tibble: 12 x 2
## yearmonth total
## <date> <int>
## 1 2010-12-01 884
## 2 2011-01-01 739
## 3 2011-02-01 757
## 4 2011-03-01 973
## 5 2011-04-01 853
## 6 2011-05-01 1054
## 7 2011-06-01 990
## 8 2011-07-01 946
## 9 2011-08-01 933
## 10 2011-09-01 1259
## 11 2011-10-01 1361
## 12 2011-11-01 1660
ggplot(customer_bulanan,
aes(x = yearmonth, y = total)) +
geom_bar(fill = rainbow(12),
color="azure4",
stat= "identity",
width = 24) +
theme_minimal() +
geom_text(aes(label = total),
vjust = 1) +
labs( x = "Bulan",
y = "Customer",
title = "Total Transaksi Pelanggan Perbulan") +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_x_date(breaks = date_breaks('1 month'),
labels = date_format("%b %y"))Categorical Bar Chart 2
Argumen Anda: Dari barchart dapat dilihat total customer terkecil berada di bulan januari 2011 sebanyak 739 customer dan total customer terbesar berada pada November 2011 sebanyak 1660 customer.
• Gunakan interaktif Line-Chart untuk memperlihatkan bagaimana pertumbuhan pelanggan baru setiap bulan?
library(glue)
library(plotly)
pelanggan_baru <- Retail %>%
group_by(ID_Customer) %>%
summarise(awal = min(Tanggal_Transaksi)) %>%
ungroup() %>%
mutate(ym = format(awal, format = "%y-%m-1"),
ym = ymd(ym)) %>%
group_by(ym) %>%
summarise(customer_baru = n()) %>%
ungroup() %>%
mutate(popup = glue("Bulan : {ym}
Customer : {customer_baru}"))
plot_pelanggan_baru <- pelanggan_baru %>%
ggplot(aes(x = ym,
y = customer_baru))+
geom_line(size = 1, colour="red") +
geom_point(size = 2.5, aes(text = popup), colour = "green")+
labs( title = "Pertumbuhan Customer perbulan",
x = "Bulan",
y = "Customer")+
scale_x_date(breaks = date_breaks(width = "1 month"),
labels = date_format("%b %y"))
ggplotly(plot_pelanggan_baru, tooltip="text") %>%
config(displayModeBar = T, scrollzoom = F)Argumen Anda: Dari grafik dapat dilihat pertambahan customer yang paling besar terjadi pada Desember 2010 sebanyak 884 customer. Sedangkan yang paling rendah terjadi pada Agustus 2010 sebanyak 169 customer. Hal ini berbanding terbalik dengan grafik sebelumnya dimana transaksinya meningkat.
• Gunakan Radar-charts untuk menganalisis Waktu pemesanan yang terbaru dalam (bulanan, harian, dan per-jam)
# Bulan
Bulanan <- Retail %>% select(Tanggal_Transaksi,No_Invoice) %>%
distinct() %>%
mutate(month = month(Tanggal_Transaksi),
day = day(Tanggal_Transaksi)) %>%
group_by(month,day) %>%
summarise(total = n()) %>%
ungroup() %>%
group_by(day) %>%
summarise(avg_monthly_trans = as.integer(median(total))) %>%
ungroup() %>%
mutate(popup = glue("Date : {day}
Total Transaction: {avg_monthly_trans}"))
Bulanan %>%
ggplot(aes(x=as.factor(day), y=avg_monthly_trans)) +
geom_bar(stat="identity", aes(fill=avg_monthly_trans),show.legend = FALSE)+
labs(title = "Transaksi Bulanan",
x = "Tanggal",
y = NULL)+
theme_minimal()+
scale_fill_gradient(low = "#FFF8DC", high="#00008B")+
theme(axis.title = element_blank(),
legend.position = "none",
plot.title = element_text(hjust = 0.5,size=12, face="bold"),
plot.subtitle = element_text(hjust = 0.5,size=10),
axis.text.y = element_blank(),
axis.text.x=element_text(size=11, face="bold"))+
coord_polar() -> Bulan
# Hari
Harian <- Retail %>% select(No_Invoice,Tanggal_Transaksi) %>%
distinct() %>%
mutate(month = month(Tanggal_Transaksi),
wday = wday(Tanggal_Transaksi,week_start = getOption("lubridate.week.start", 1))) %>%
group_by(month,wday) %>%
summarise(total = n()) %>%
ungroup() %>%
group_by(wday) %>%
summarise(avg_wday_trans = as.integer(median(total))) %>%
ungroup() %>%
mutate(popup = glue("wday : {wday}
Total Transaction: {avg_wday_trans}"))
Harian %>%
ggplot(aes(wday,avg_wday_trans))+
geom_bar(width=1, stat="identity", show.legend = FALSE, aes(fill=avg_wday_trans))+
labs(
title = "Transaksi Harian",
x = "Hari",
y = NULL)+
scale_x_continuous(breaks = c(1,2,3,4,5,6,7),
labels = c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"))+
theme_minimal()+
scale_fill_gradient(low = "#adff2f", high="#006400")+
theme(axis.title = element_blank(),
legend.position = "none",
plot.title = element_text(hjust = 0.5,size=12, face="bold"),
plot.subtitle = element_text(hjust = 0.5,size=10),
axis.text.y = element_blank(),
axis.text.x=element_text(size=11, face="bold"))+
coord_polar() -> Hari
#Jam
Jaman <- Retail %>% select(Tanggal_Transaksi,No_Invoice) %>%
distinct() %>%
mutate(day = day(Tanggal_Transaksi),
hour = hour(Tanggal_Transaksi)) %>%
group_by(day,hour) %>%
summarise(total = n()) %>%
ungroup() %>%
group_by(hour) %>%
summarise(avg_hourly_trans = as.integer(median(total))) %>%
ungroup() %>%
mutate(popup = glue("Hour of Day : {hour}
Total Transaction: {avg_hourly_trans}"))
time_range = data_frame(hour = c(0:23))
data_frame(hour = c(0:23)) %>%
left_join(Jaman ,by="hour") %>%
mutate(hour = as.factor(hour)) %>%
ggplot(aes(x=hour,y=avg_hourly_trans))+
geom_bar(stat="identity",show.legend = FALSE, aes(fill=avg_hourly_trans))+
labs(title = "Transaksi Perjam",
x = "Jam",
y = NULL)+
theme_minimal()+
scale_fill_gradient(low = "#FFFF00", high="#FF4500")+
theme(axis.title = element_blank(),
legend.position = "none",
plot.title = element_text(hjust = 0.5,size=12, face="bold"),
plot.subtitle = element_text(hjust = 0.5,size=10),
axis.text.y = element_blank(),
axis.text.x=element_text(size=11, face="bold"))+
coord_polar() -> Jam
gridExtra::grid.arrange(Bulan,Hari,Jam, ncol = 3)Argumen Anda: Dari hasil dapat dilihat, semakin gelap warnanya, maka semakin banyak transaksi yang terjadi. Untuk Bulanannya, Transaksi terjadi paling banyak di tanggal 30 setiap bulannya. Sedangkan untuk harian, transaksi terjai paling banyak di hari Kamis. Lalu untuk jam nya, transaksi terjadi paling banyak di jam 12 siang setiap harinya.
• Gunakan interaktif Bar-Chart untuk memperlihatkan berapa frekuensi transaksi setiap bulan?
Transaksi_Bulan <- Retail %>%
select(Tanggal_Transaksi,No_Invoice) %>%
distinct() %>%
mutate( yearmonth = format(Tanggal_Transaksi, format = "%y - %m - 1"),
yearmonth = ymd(yearmonth)) %>%
group_by(yearmonth) %>%
summarise(total_transaksi = n()) %>%
ungroup()
freq_bulanan <- plot_ly(Transaksi_Bulan,
x = ~yearmonth,
y = ~total_transaksi,
type = 'bar',
marker = list(color = rainbow(12),
line = list(color = "black",
width = 1.5)))
freq_bulanan <- freq_bulanan %>% layout(title = "Frekuensi Transaksi Perbulan",
xaxis = list(title = "Bulan",
type = "date",
tickformat = "%b %y"),
yaxis = list(title = "Total Transaksi"))
freq_bulananArgumen Anda: Frekuensi transaksi terbanyak terjadi pada November 2011 sejumlah 2644, dan Frekuensi transaksi yang paling sedikit terjadi pada Januari 2011 sebanyak 989 transaksi.
• Gunakan interaktif Bar-Chart yang horizontal untuk memperlihatkan 10 teratas dari produk terpopuler berdasarkan frekuensi transaksinya!
freq_terbanyak <- Retail %>%
group_by(Kode_Barang,Nama_Barang) %>%
summarise(Frekuensi = n()) %>%
ungroup() %>%
arrange(desc(Frekuensi)) %>%
head(10) %>%
mutate(nama = as.factor(Nama_Barang),
nama = reorder(nama, Frekuensi)) %>%
ggplot(aes(x=nama,
y=Frekuensi))+
geom_bar(stat="identity",
aes(fill= nama, text= Frekuensi),
show.legend = FALSE)+
labs(title="10 Produk Terpopuler berdasarkan Frekuensi Transaksi",
x=NULL,
y=NULL) +
coord_flip()
ggplotly(freq_terbanyak, tooltip="text") %>%
layout(showlegend=FALSE) %>%
config(displayModeBar = T, scrollzoom = T)Argumen Anda: Menggunakan barchart interaktif dengan data yang sudah diurutkan berdasarkan tingkat transaksinya, didapat 10 produk terpopuler, dengan jumlah terbanyak 1964 transaksi yaitu Cream Hanging Heart T-light Holder.
• Gunakan interaktif Bar-Chart yang horizontal untuk memperlihatkan 10 produk paling populer berdasarkan jumlah pesanan!
quantity_populer <- Retail %>%
group_by(Kode_Barang,Nama_Barang) %>%
summarise(total_kuantitas = sum(Kuantitas)) %>%
ungroup() %>%
arrange(desc(total_kuantitas)) %>%
head(10) %>%
mutate(nama = as.factor(Nama_Barang),
nama = reorder(nama, total_kuantitas))
quan_populer <- plot_ly(quantity_populer,
x = ~total_kuantitas,
y = ~nama,
type = 'bar',
marker = list(color = rainbow(12),
line = list(color = "black",
width = 1.5)),
orientation="h")
quan_populer<- quan_populer %>% layout(title = "10 Produk Paling Populer Berdasarkan Jumlah Pesanan",
xaxis = list(title = ""),
yaxis = list(title = ""))
quan_populerArgumen Anda: Berdasarkan permintaannya, permintaan terbanyak dipegang oleh, medium ceramic top storage jar sebanyak 77729 permintaan.
• Gunakan interaktif Bar-Chart yang horizontal untuk memperlihatkan 10 produk paling populer menurut total pelanggan!
customer_populer <- Retail%>%
select(ID_Customer, Kode_Barang ,Nama_Barang) %>%
distinct() %>%
group_by(Kode_Barang, Nama_Barang) %>%
summarise(total_customer = n()) %>%
ungroup() %>%
arrange(desc(total_customer)) %>%
head(10) %>%
mutate(description = as.factor(Nama_Barang),
description = reorder(description,total_customer)) %>%
ggplot(aes(x=description, y=total_customer))+
geom_bar(stat="identity", aes(fill=description, text=total_customer), show.legend = FALSE)+
labs(title="10 Produk Paling Populer Berdasarkan Total Pelanggan",
x=NULL,
y=NULL)+
coord_flip()
ggplotly(customer_populer, tooltip = "text") %>%
layout(showlegend=FALSE) %>%
config(displayModeBar = T, scrollzoom = F)Argumen Anda: Grafik ini menunjukkan 10 data produk terpopuler berdasarkan total pelanggannya.
• Gunakan interaktif Bar-Chart yang horizontal untuk memperlihatkan 10 produk paling populer berdasarkan Nilai Mata uang!
totalprice_populer <- Retail %>%
group_by(Kode_Barang,Nama_Barang) %>%
summarise(total_harga = sum(Harga_Total)) %>%
ungroup() %>%
arrange(desc(total_harga)) %>%
head(10) %>%
mutate(nama = as.factor(Nama_Barang),
nama = reorder(nama, total_harga))
tp_populer <- plot_ly(totalprice_populer,
x = ~total_harga,
y = ~nama,
type = 'bar',
marker = list(color = rainbow(12),
line = list(color = "black",
width = 1.5)),
orientation="h")
tp_populer<- tp_populer %>% layout(title = "10 Produk Paling Populer Berdasarkan Total Harga",
xaxis = list(title = ""),
yaxis = list(title = ""))
tp_populerArgumen Anda: Grafik tersebut menunjukan 10 produk terpopuler berdasarkan total harga (income)
• Lakukan Analisa dengan menggunakan Time Series apakah penjualan berdasarkan Nilai Mata Uang Meningkat-Menurun?
income_bulan <- Retail %>%
group_by(Nama_Barang, Harga_Total) %>%
summarise(awal = min(Tanggal_Transaksi)) %>%
ungroup() %>%
mutate(ym = format(awal, format = "%y-%m-1"),
ym = ymd(ym)) %>%
group_by(ym) %>%
summarise(income = sum(Harga_Total)) %>%
ungroup() %>%
mutate(popup = glue("Bulan : {ym}
Income : {income}"))
income_bulan_plot <- income_bulan %>%
ggplot(aes(x = ym,
y = income,
group = 1)) +
geom_line(size = 1, colour="red") +
labs( title = "Perubahan Income Perbulan",
x = "Bulan",
y = "Income")+
scale_x_date(breaks = date_breaks(width = "1 month"),
labels = date_format("%b %y")) +
scale_y_continuous(label = scales::format_format(big.mark = ",",
decimal.mark = ".",
scientific = F))
income_harian <- Retail %>%
group_by(Nama_Barang, Harga_Total) %>%
summarise(awal = min(Tanggal_Transaksi)) %>%
ungroup() %>%
mutate(ym = format(awal, format = "%y-%m-%d"),
ym = ymd(ym)) %>%
group_by(ym) %>%
summarise(income = sum(Harga_Total)) %>%
ungroup() %>%
mutate(popup = glue("Bulan : {ym}
Income : {income}"))
income_hari_plot <- income_harian %>%
ggplot(aes(x = ym,
y = income,
group = 1)) +
geom_line(size = 1, colour="green") +
labs( title = "Perubahan Income Perbulan - Perhari",
x = "Bulan",
y = "Income")+
scale_x_date(breaks = date_breaks(width = "1 month"),
labels = date_format("%b %y")) +
scale_y_continuous(label = scales::format_format(big.mark = ",",
decimal.mark = ".",
scientific = F))
hasil <- gridExtra::grid.arrange(income_bulan_plot, income_hari_plot, ncol = 1)Argumen Anda: Bedasarkan data, bisa dilihat pada timeseries dimana pada perbulan terlihat bahwa incomenya menurun. Begitu juga dengan perbulan-perhari. Tetapi meski menurun, bisa dibilang incomenya menjadi lebih stabil dimana naik turunnya tidak terlalu jauh tidak seperti di bulan desember 2010 hingga may 2011 yang naik turunnya begitu drastis.
• Gunakan Tree-Map untuk memvisualisasikan sebagian besar Konsumen menurut Negara?
library(treemap)
treemap(Retail,
index = c("Negara"),
vSize = "Kuantitas",
title = "Konsumen per-Negara",
border.col = "grey40")treemap(Retail,
index = c("Negara"),
vSize = "Harga_Total",
title = "Income per-Negara",
border.col = "grey40")Argumen Anda: sebagian besar consumer / pelanggan berasal United Kingdom.
Berikan pandangan dan pendapat terkait kasus yang sudah anda kerjakan diatas (Apa yang akan anda lakukan sebagai Manager mengenai kasus tersebeut untuk mengembangkan bisnis perbelanjaan online tersebut berdasarkan analisa yang anda temukan!).
Argumen Anda: Dari data yang didapat, masih banyak yang harus diperbaiki lantaran banyak data yang tidak valid dan bersifat ganda. Setelah diperbaiki, didapat kesimpulan pada kasus ini dimana kita mengetahui bahwa Total transaksi pelanggan perbulan cenderung meningkat cukup drastis pada November 2011 tetapi, penambahan Customernya hanya sedikit yang berarti orang yang berbelanja hanya itu itu saja. Selain itu, terlihat pemesanan biasanya dilakukan pada weekdays, dan pada jam makan siang. Selain itu penjualan juga lebih banyak terjadi di kisaran akhir bulan dan awal bulan. Begitu juga dengan perbandingan barang barang terpopuler dimana perbarang memiliki range yang cukup jauh yang berarti produk yang dibeli itu itu saja. Selain itu dari Income kita bisa melihat bahwa income cenderung menurun meski lebih stabil.
Menurut saya, ada beberapa tindakan yang harus diambil seperti pemasaran dan pengetahuan tentang keinginan pasar. Seperti barang apa dan trend apa yang sedang ada di masyarakat. Kita harus mengembangkan pemasaran dan promosi supaya lebih banyak pelanggan yang mengetahui bisnis kita. Salah satu langkah yang bisa diambil mungkin bisa dengan mengadakan promosi di jam jam yang pembelinya sedang untuk mendapat lebih banyak pelanggan di jam / hari itu dan semakin banyak yang berarti akan semakin banyak pelanggan baru.
Lalu dari data bisa dilihat kebanyakan pembeli berasal dari United Kingdom dan perbandingannya bisa terbilang jauh dengan negara lainnya. Ini berarti kita harus memahami kebutuhan di negara lainnya sehingga penjualan bisa lebih merata di seluruh negara. Kita harus membuat agar semakin banyak orang yang tertarik dengan produk kita.
Langkah yang bisa diambil, mulai dari menentukan sasaran pemasaran. Lalu tentukan produk yang sesuai dengan minat yang menjadi sasaran kita. Kemudian adakanlah promosi seperti diskon, event, perekrutan dropshipper, atau promosi lainnya yang bisa menarik perhatian dan ketertarikan pelanggan.
Saat dilakukan mungkin revenue akan menurun tetapi akan semakin banyak pelanggan yang membeli barang barang kita.