Email: sianadputrii@gmail.com
RPubs: https://rpubs.com/sianadputrii/
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?).
#Set Working Directory
#setwd("C:/Users/Siana/Downloads")
Data1 <- readRDS("Retail.rds")
head(Data1, 5)## 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
## 4 536365 84029G KNITTED UNION FLAG HOT WATER BOTTLE 6
## 5 536365 84029E RED WOOLLY HOTTIE WHITE HEART. 6
## 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
## 4 2010-12-01 08:26:00 3.39 17850 United Kingdom
## 5 2010-12-01 08:26:00 3.39 17850 United Kingdom
## # A tibble: 5 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
## 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
## # ... with 2 more variables: CustomerID <dbl>, Country <chr>
Argumen Anda: Menurut saya import yang lebih mudah digunakan adalah format RDS, karena bisa langsung di import tanpa harus menginstall package seperti formal excel. Dan juga menurut saya mengimport file rds lebih cepat dibandingkan file excel. (Di Rstudio saya seperti itu soalnya :D)
Ubah nama variabel data tersebut agar lebih mudah dipelajari oleh pembaca.
names(Data1) <- c("No_Faktur",
"Kode_barang",
"Detail_Barang",
"Total",
"Tanggal_Faktur",
"Harga",
"ID_Pelanggan",
"Negara")
head(Data1, 5)## # A tibble: 5 x 8
## No_Faktur Kode_barang Detail_Barang Total Tanggal_Faktur Harga
## <chr> <chr> <chr> <dbl> <dttm> <dbl>
## 1 536365 85123A WHITE HANGIN~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE METAL ~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPID ~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UNIO~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY H~ 6 2010-12-01 08:26:00 3.39
## # ... with 2 more variables: ID_Pelanggan <dbl>, Negara <chr>
Argumen Anda: Saya mengubah semua nama variabel dari -> menjadi seperti ini :
* InvoiceNo = No Faktur
* StockCode = Kode Barang
* Description = Detail Barang
* Quantity = Total
* InvoiceDate = Tanggal Faktur
* UnitPrice = Harga
* CustomerID = ID Pelanggan
* Country = Negara
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_Faktur : chr [1:541909] "536365" "536365" "536365" "536365" ...
## $ Kode_barang : chr [1:541909] "85123A" "71053" "84406B" "84029G" ...
## $ Detail_Barang : chr [1:541909] "WHITE HANGING HEART T-LIGHT HOLDER" "WHITE METAL LANTERN" "CREAM CUPID HEARTS COAT HANGER" "KNITTED UNION FLAG HOT WATER BOTTLE" ...
## $ Total : num [1:541909] 6 6 8 6 6 2 6 6 6 32 ...
## $ Tanggal_Faktur: POSIXct[1:541909], format: "2010-12-01 08:26:00" "2010-12-01 08:26:00" ...
## $ Harga : num [1:541909] 2.55 3.39 2.75 3.39 3.39 7.65 4.25 1.85 1.85 1.69 ...
## $ ID_Pelanggan : num [1:541909] 17850 17850 17850 17850 17850 ...
## $ Negara : chr [1:541909] "United Kingdom" "United Kingdom" "United Kingdom" "United Kingdom" ...
library(magrittr)
data.frame(
No_Faktur = Data1$No_Faktur %>% unique() %>% length(),
Kode_Barang = Data1$Kode_barang %>% unique() %>% length(),
Detail_Barang = Data1$Detail_Barang %>% unique() %>% length(),
Negara = Data1$Negara %>% unique() %>% length(),
ID_Pelanggan = Data1$ID_Pelanggan %>% unique() %>% length())## No_Faktur Kode_Barang Detail_Barang Negara ID_Pelanggan
## 1 25900 4070 4212 38 4373
Negara <- as.factor(Data1$Negara)
Total <- as.integer(Data1$Total)
ID_Pelanggan <- as.integer(Data1$`ID Pelanggan`)## Warning: Unknown or uninitialised column: `ID Pelanggan`.
## # A tibble: 5 x 8
## No_Faktur Kode_barang Detail_Barang Total Tanggal_Faktur Harga
## <chr> <chr> <chr> <dbl> <dttm> <dbl>
## 1 536365 85123A WHITE HANGIN~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE METAL ~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPID ~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UNIO~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY H~ 6 2010-12-01 08:26:00 3.39
## # ... with 2 more variables: ID_Pelanggan <dbl>, Negara <chr>
Argumen Anda: Dari pengecekan struktur data diatas bisa diketahui variabel Negara merupakan tipe data karakter sehingga dapat diubah menjadi tipe faktor, kemudian ID Pelanggan diubah menjadi tipe karakter, dengan menggunakan fungsi as.factor dan as.integer.
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:
## [1] 9288
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
Cancel_Order <- Data1 %>% filter(grepl("C", Data1$No_Faktur))
Cancel_Order <- Data1 %>%
filter(!grepl("C", Data1$No_Faktur))
Cancel_Order## # A tibble: 532,621 x 8
## No_Faktur Kode_barang Detail_Barang Total Tanggal_Faktur Harga
## <chr> <chr> <chr> <dbl> <dttm> <dbl>
## 1 536365 85123A WHITE HANGIN~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE METAL ~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPID ~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UNIO~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY H~ 6 2010-12-01 08:26:00 3.39
## 6 536365 22752 SET 7 BABUSH~ 2 2010-12-01 08:26:00 7.65
## 7 536365 21730 GLASS STAR F~ 6 2010-12-01 08:26:00 4.25
## 8 536366 22633 HAND WARMER ~ 6 2010-12-01 08:28:00 1.85
## 9 536366 22632 HAND WARMER ~ 6 2010-12-01 08:28:00 1.85
## 10 536367 84879 ASSORTED COL~ 32 2010-12-01 08:34:00 1.69
## # ... with 532,611 more rows, and 2 more variables: ID_Pelanggan <dbl>,
## # Negara <chr>
Argumen Anda: Transaksi yang perlu dihapus adalah transaksi yang Nomor Fakturnya dimulai dengan huruf C. Dan ada 9288 transaksi yang perlu kita batalkan/dihapuskan.
## # A tibble: 9,291 x 8
## No_Faktur Kode_barang Detail_Barang Total Tanggal_Faktur Harga
## <chr> <chr> <chr> <dbl> <dttm> <dbl>
## 1 C536379 D Discount -1 2010-12-01 09:41:00 27.5
## 2 C536383 35004C SET OF 3 COL~ -1 2010-12-01 09:49:00 4.65
## 3 C536391 22556 PLASTERS IN ~ -12 2010-12-01 10:24:00 1.65
## 4 C536391 21984 PACK OF 12 P~ -24 2010-12-01 10:24:00 0.290
## 5 C536391 21983 PACK OF 12 B~ -24 2010-12-01 10:24:00 0.290
## 6 C536391 21980 PACK OF 12 R~ -24 2010-12-01 10:24:00 0.290
## 7 C536391 21484 CHICK GREY H~ -12 2010-12-01 10:24:00 3.45
## 8 C536391 22557 PLASTERS IN ~ -12 2010-12-01 10:24:00 1.65
## 9 C536391 22553 PLASTERS IN ~ -24 2010-12-01 10:24:00 1.65
## 10 C536506 22960 JAM MAKING S~ -6 2010-12-01 12:38:00 4.25
## # ... with 9,281 more rows, and 2 more variables: ID_Pelanggan <dbl>,
## # Negara <chr>
Argumen Anda: Faktur yang valid adalah faktur yang terdiri dari 6 angka. Diatas menunjukkan faktur yang terdiri lebih dari 6 angka = 3 faktur. Itu merupakan data yang tidak valid dan perlu dihapus.
## [1] 1336
## # A tibble: 5 x 8
## No_Faktur Kode_barang Detail_Barang Total Tanggal_Faktur Harga
## <chr> <chr> <chr> <dbl> <dttm> <dbl>
## 1 536589 21777 <NA> -10 2010-12-01 16:50:00 0
## 2 536764 84952C <NA> -38 2010-12-02 14:42:00 0
## 3 536996 22712 <NA> -20 2010-12-03 15:30:00 0
## 4 536997 22028 <NA> -20 2010-12-03 15:30:00 0
## 5 536998 85067 <NA> -6 2010-12-03 15:30:00 0
## # ... with 2 more variables: ID_Pelanggan <dbl>, Negara <chr>
## # A tibble: 531,282 x 8
## No_Faktur Kode_barang Detail_Barang Total Tanggal_Faktur Harga
## <chr> <chr> <chr> <dbl> <dttm> <dbl>
## 1 536365 85123A WHITE HANGIN~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE METAL ~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPID ~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UNIO~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY H~ 6 2010-12-01 08:26:00 3.39
## 6 536365 22752 SET 7 BABUSH~ 2 2010-12-01 08:26:00 7.65
## 7 536365 21730 GLASS STAR F~ 6 2010-12-01 08:26:00 4.25
## 8 536366 22633 HAND WARMER ~ 6 2010-12-01 08:28:00 1.85
## 9 536366 22632 HAND WARMER ~ 6 2010-12-01 08:28:00 1.85
## 10 536367 84879 ASSORTED COL~ 32 2010-12-01 08:34:00 1.69
## # ... with 531,272 more rows, and 2 more variables: ID_Pelanggan <dbl>,
## # Negara <chr>
Argumen Anda: Ada 1336 transaksi yang memiliki total barang dari <=0, yaitu minus. Karena tidak valid, transaksi tersebut kita hapuskan.
## [1] 2515
## # A tibble: 530,103 x 8
## No_Faktur Kode_barang Detail_Barang Total Tanggal_Faktur Harga
## <chr> <chr> <chr> <dbl> <dttm> <dbl>
## 1 536365 85123A WHITE HANGIN~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE METAL ~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPID ~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UNIO~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY H~ 6 2010-12-01 08:26:00 3.39
## 6 536365 22752 SET 7 BABUSH~ 2 2010-12-01 08:26:00 7.65
## 7 536365 21730 GLASS STAR F~ 6 2010-12-01 08:26:00 4.25
## 8 536366 22633 HAND WARMER ~ 6 2010-12-01 08:28:00 1.85
## 9 536366 22632 HAND WARMER ~ 6 2010-12-01 08:28:00 1.85
## 10 536367 84879 ASSORTED COL~ 32 2010-12-01 08:34:00 1.69
## # ... with 530,093 more rows, and 2 more variables: ID_Pelanggan <dbl>,
## # Negara <chr>
Argumen Anda: Ada 2517 harga satuan barang yang tidak valid, sehingga harus di hapuskan.
Invalid_Produk <- Data1 %>%
filter(nchar(Kode_barang) >=5 )
Data1 %>% filter(nchar(Kode_barang) > 6) %>%
select(Kode_barang, Detail_Barang) %>%
distinct() %>%
arrange(Kode_barang)## # A tibble: 33 x 2
## Kode_barang Detail_Barang
## <chr> <chr>
## 1 15056bl EDWARDIAN PARASOL BLACK
## 2 15056BL EDWARDIAN PARASOL BLACK
## 3 79323GR Unsaleable, destroyed.
## 4 79323LP Unsaleable, destroyed.
## 5 AMAZONFEE AMAZON FEE
## 6 BANK CHARGES Bank Charges
## 7 DCGS0003 BOXED GLASS ASHTRAY
## 8 DCGS0003 ebay
## 9 DCGS0004 HAYNES CAMPER SHOULDER BAG
## 10 DCGS0055 <NA>
## # ... with 23 more rows
Invalid_Produk <- Data1 %>%
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"))
Invalid_Produk## # A tibble: 532,546 x 8
## No_Faktur Kode_barang Detail_Barang Total Tanggal_Faktur Harga
## <chr> <chr> <chr> <dbl> <dttm> <dbl>
## 1 536365 85123A WHITE HANGIN~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE METAL ~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPID ~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UNIO~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY H~ 6 2010-12-01 08:26:00 3.39
## 6 536365 22752 SET 7 BABUSH~ 2 2010-12-01 08:26:00 7.65
## 7 536365 21730 GLASS STAR F~ 6 2010-12-01 08:26:00 4.25
## 8 536366 22633 HAND WARMER ~ 6 2010-12-01 08:28:00 1.85
## 9 536366 22632 HAND WARMER ~ 6 2010-12-01 08:28:00 1.85
## 10 536367 84879 ASSORTED COL~ 32 2010-12-01 08:34:00 1.69
## # ... with 532,536 more rows, and 2 more variables: ID_Pelanggan <dbl>,
## # Negara <chr>
Argumen Anda: Setelah di filter, ternyata ada barang yang dijual diluar kode perusahaan, yaitu :
* Amazonfee
* Bank Charges
* gift_0001_10
* gift_0001_20
* gift_0001_30
* gift_0001_40
* gift_0001_50
* DCGSSBOY
* DCGSSGIRL
Karena tidak valid, maka produk tersebut perlu dihapuskan.
data.frame(
Kode_Barang = Data1$Kode_barang %>% unique() %>% length(),
Detail_Barang = Data1$Detail_Barang %>% unique() %>% length(),
Double_Stock = Data1 %>%
select(Kode_barang, Detail_Barang) %>%
distinct() %>%
nrow())## Kode_Barang Detail_Barang Double_Stock
## 1 4058 4195 5732
Terlihat bahwa jumlah barangnya berbeda, maka ada data yang double.
Kode_Barang <- Data1 %>%
arrange(desc(Tanggal_Faktur)) %>%
select(Kode_barang,Detail_Barang)%>%
distinct()
Kode <- Kode_Barang %>%
group_by(Kode_barang)%>%
slice(1)
Data <- Data1 %>%
select(-Detail_Barang) %>%
left_join(Kode, by="Kode_barang")
data.frame(
Kode_Barang = Data1$Kode_barang %>% unique() %>% length(),
Detail_Barang = Data1$Detail_Barang %>% unique() %>% length(),
Double_Stock = Data1 %>%
select(Kode_barang, Detail_Barang) %>%
distinct() %>%
nrow())## Kode_Barang Detail_Barang Double_Stock
## 1 4058 4195 5732
Nama_Barang <- Data1 %>%
arrange(desc(Tanggal_Faktur)) %>%
select(Kode_barang, Detail_Barang) %>%
distinct()
Nama <- Nama_Barang %>%
group_by(Detail_Barang) %>%
slice(1)
Data <- Data1 %>%
select(-Kode_barang) %>%
left_join(Nama, by="Detail_Barang")
data.frame(
Kode_Barang = Data1$Kode_barang %>% unique() %>% length(),
Detail_Barang = Data1$Detail_Barang %>% unique() %>% length(),
Double_Stock = Data1 %>%
select(Kode_barang, Detail_Barang) %>%
distinct() %>%
nrow())## Kode_Barang Detail_Barang Double_Stock
## 1 4058 4195 5732
Argumen Anda: Setiap barang, memiliki kodenya tersendiri dan seharusnya tidak ada double kode atau kode ganda. setelah di check terlihat bahwa ada beberapa barang yang kodenya sama jadi harus dibersihkan/dihapuskan.
Country <- Data1 %>%
arrange(desc(Tanggal_Faktur, ID_Pelanggan)) %>%
select(ID_Pelanggan, Negara) %>%
group_by(ID_Pelanggan) %>%
slice(1)
Data <- Data1 %>%
select(-Negara) %>%
left_join(Country, by = "ID_Pelanggan")
data_frame(
ID_Pelanggan = Data %>%
select(ID_Pelanggan) %>%
distinct() %>%
nrow(),
Negara = Data %>%
select(ID_Pelanggan,Negara) %>%
distinct() %>%
nrow())## Warning: `data_frame()` is deprecated as of tibble 1.1.0.
## Please use `tibble()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.
## # A tibble: 1 x 2
## ID_Pelanggan Negara
## <int> <int>
## 1 4340 4340
Argumen Anda: Setiap pelanggan cukup memiliki 1 kewarganegaraan saja, jika lebih dari 1 negara maka itu tidak valid dan perlu dihapuskan.
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
## # A tibble: 507,453 x 8
## No_Faktur Kode_barang Detail_Barang Total Tanggal_Faktur Harga
## <chr> <chr> <chr> <dbl> <dttm> <dbl>
## 1 536365 85123A WHITE HANGIN~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE METAL ~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPID ~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UNIO~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY H~ 6 2010-12-01 08:26:00 3.39
## 6 536365 22752 SET 7 BABUSH~ 2 2010-12-01 08:26:00 7.65
## 7 536365 21730 GLASS STAR F~ 6 2010-12-01 08:26:00 4.25
## 8 536366 22633 HAND WARMER ~ 6 2010-12-01 08:28:00 1.85
## 9 536366 22632 HAND WARMER ~ 6 2010-12-01 08:28:00 1.85
## 10 536367 84879 ASSORTED COL~ 32 2010-12-01 08:34:00 1.69
## # ... with 507,443 more rows, and 2 more variables: ID_Pelanggan <dbl>,
## # Negara <chr>
Argumen Anda: Karena data pada bulan Desember 2011 adalah tidak lengkap, maka data tersebut kita hapus dan transaksi yang digunakan adalah transaksi dari Desember 2010 - November 2011 atau data lengkap selama 1 tahun.
## Total_Data Data_Double
## 1 532618 527387
## # A tibble: 527,387 x 8
## No_Faktur Kode_barang Detail_Barang Total Tanggal_Faktur Harga
## <chr> <chr> <chr> <dbl> <dttm> <dbl>
## 1 536365 85123A WHITE HANGIN~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE METAL ~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPID ~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UNIO~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY H~ 6 2010-12-01 08:26:00 3.39
## 6 536365 22752 SET 7 BABUSH~ 2 2010-12-01 08:26:00 7.65
## 7 536365 21730 GLASS STAR F~ 6 2010-12-01 08:26:00 4.25
## 8 536366 22633 HAND WARMER ~ 6 2010-12-01 08:28:00 1.85
## 9 536366 22632 HAND WARMER ~ 6 2010-12-01 08:28:00 1.85
## 10 536367 84879 ASSORTED COL~ 32 2010-12-01 08:34:00 1.69
## # ... with 527,377 more rows, and 2 more variables: ID_Pelanggan <dbl>,
## # Negara <chr>
Argumen Anda: Dari 541,909 Data sudah dihapuskan data yang double sehingga menjadi 536,639 Data.
Data <- Data1 %>%
mutate(Total_Bayar = Total * Harga) %>%
select(No_Faktur, Tanggal_Faktur, ID_Pelanggan, Negara,
Kode_barang, Detail_Barang, Total, Harga,
Total_Bayar)
Data## # A tibble: 532,618 x 9
## No_Faktur Tanggal_Faktur ID_Pelanggan Negara Kode_barang Detail_Barang
## <chr> <dttm> <dbl> <chr> <chr> <chr>
## 1 536365 2010-12-01 08:26:00 17850 Unite~ 85123A WHITE HANGIN~
## 2 536365 2010-12-01 08:26:00 17850 Unite~ 71053 WHITE METAL ~
## 3 536365 2010-12-01 08:26:00 17850 Unite~ 84406B CREAM CUPID ~
## 4 536365 2010-12-01 08:26:00 17850 Unite~ 84029G KNITTED UNIO~
## 5 536365 2010-12-01 08:26:00 17850 Unite~ 84029E RED WOOLLY H~
## 6 536365 2010-12-01 08:26:00 17850 Unite~ 22752 SET 7 BABUSH~
## 7 536365 2010-12-01 08:26:00 17850 Unite~ 21730 GLASS STAR F~
## 8 536366 2010-12-01 08:28:00 17850 Unite~ 22633 HAND WARMER ~
## 9 536366 2010-12-01 08:28:00 17850 Unite~ 22632 HAND WARMER ~
## 10 536367 2010-12-01 08:34:00 13047 Unite~ 84879 ASSORTED COL~
## # ... with 532,608 more rows, and 3 more variables: Total <dbl>, Harga <dbl>,
## # Total_Bayar <dbl>
Argumen Anda: Fitur Ekstraksi digunakan untuk menambah variabel baru, contohnya yang kita buat Total_Bayar, dihitung hari hasil \(Total Barang*Harga\).
## No_Faktur Kode_barang Detail_Barang Total Tanggal_Faktur
## 0 0 1454 0 0
## Harga ID_Pelanggan Negara
## 0 134694 0
## # A tibble: 397,924 x 8
## No_Faktur Kode_barang Detail_Barang Total Tanggal_Faktur Harga
## <chr> <chr> <chr> <dbl> <dttm> <dbl>
## 1 536365 85123A WHITE HANGIN~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE METAL ~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPID ~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UNIO~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY H~ 6 2010-12-01 08:26:00 3.39
## 6 536365 22752 SET 7 BABUSH~ 2 2010-12-01 08:26:00 7.65
## 7 536365 21730 GLASS STAR F~ 6 2010-12-01 08:26:00 4.25
## 8 536366 22633 HAND WARMER ~ 6 2010-12-01 08:28:00 1.85
## 9 536366 22632 HAND WARMER ~ 6 2010-12-01 08:28:00 1.85
## 10 536367 84879 ASSORTED COL~ 32 2010-12-01 08:34:00 1.69
## # ... with 397,914 more rows, and 2 more variables: ID_Pelanggan <dbl>,
## # Negara <chr>
Argumen Anda: Mencari data yang hilang menggunakan is.na function, karena ID Pelanggan dengan nomor 135080 tidak valid, data tersebut dihapuskan.
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: 5 x 8
## No_Faktur Kode_barang Detail_Barang Total Tanggal_Faktur Harga
## <chr> <chr> <chr> <dbl> <dttm> <dbl>
## 1 536365 85123A WHITE HANGIN~ 6 2010-12-01 08:26:00 2.55
## 2 536365 71053 WHITE METAL ~ 6 2010-12-01 08:26:00 3.39
## 3 536365 84406B CREAM CUPID ~ 8 2010-12-01 08:26:00 2.75
## 4 536365 84029G KNITTED UNIO~ 6 2010-12-01 08:26:00 3.39
## 5 536365 84029E RED WOOLLY H~ 6 2010-12-01 08:26:00 3.39
## # ... with 2 more variables: ID_Pelanggan <dbl>, Negara <chr>
• Gunakan Bar-Chart untuk memperlihatkan berapa banyak pelanggan yang melakukan transaksi setiap bulan?
## Warning: package 'zoo' was built under R version 4.0.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(scales)
Monthly_Cust <- DATA %>%
select(Tanggal_Faktur, ID_Pelanggan) %>%
mutate(Date = format(Tanggal_Faktur, format = "%y-%b-1"),
Date = ymd(Date)) %>%
select(ID_Pelanggan, Date) %>%
distinct() %>%
group_by(Date) %>%
summarise(Total_Cust = n()) %>%
ungroup()## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 13 x 2
## Date Total_Cust
## <date> <int>
## 1 2010-12-01 886
## 2 2011-01-01 742
## 3 2011-02-01 759
## 4 2011-03-01 975
## 5 2011-04-01 857
## 6 2011-05-01 1057
## 7 2011-06-01 992
## 8 2011-07-01 950
## 9 2011-08-01 936
## 10 2011-09-01 1267
## 11 2011-10-01 1365
## 12 2011-11-01 1666
## 13 2011-12-01 616
library(ggplot2)
library(scales)
ggplot(Monthly_Cust,
aes(x = Date, y = Total_Cust)) +
geom_bar(fill = rainbow(13),
color="black",
stat= "identity",
width = 14) +
theme_minimal() +
geom_text(aes(label = Total_Cust),
vjust = -0.35) +
labs( x = "Month",
y = "Customer",
title = "Total Customer Monthly") +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_x_date(breaks = date_breaks('1 month'),
labels = date_format("%b %y"))Argumen Anda: Jumlah pelanggan terbanyak terdapat pada bulan November 2011 dengan jumlag pelanggan mencapai 1712 customer.
• Gunakan interaktif Line-Chart untuk memperlihatkan bagaimana pertumbuhan pelanggan baru setiap bulan?
##
## Attaching package: 'glue'
## The following object is masked from 'package:dplyr':
##
## collapse
## Warning: package 'plotly' was built under R version 4.0.3
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
New_Cust <- DATA %>%
group_by(ID_Pelanggan) %>%
summarise(Start = min(Tanggal_Faktur)) %>%
ungroup() %>%
mutate(ym = format(Start, format = "%y-%m-1"),
ym = ymd(ym)) %>%
group_by(ym) %>%
summarise(Customer = n()) %>%
ungroup() %>%
mutate(popup = glue("Bulan : {ym}
Customer : {Customer}"))## `summarise()` ungrouping output (override with `.groups` argument)
## `summarise()` ungrouping output (override with `.groups` argument)
Graphs <- New_Cust %>%
ggplot(aes(x = ym,
y = Customer))+
geom_line(size = 1, colour="black") +
geom_point(size = 2.5, aes(text = popup), colour = "white")+
labs( title = "New Customer Monthly",
x = "Month",
y = "Customer")+
scale_x_date(breaks = date_breaks(width = "1 month"),
labels = date_format("%b %y"))## Warning: Ignoring unknown aesthetics: text
## Warning: 'config' objects don't have these attributes: 'scrollzoom'
## Valid attributes include:
## 'staticPlot', 'plotlyServerURL', 'editable', 'edits', 'autosizable', 'responsive', 'fillFrame', 'frameMargins', 'scrollZoom', 'doubleClick', 'doubleClickDelay', 'showAxisDragHandles', 'showAxisRangeEntryBoxes', 'showTips', 'showLink', 'linkText', 'sendData', 'showSources', 'displayModeBar', 'showSendToCloud', 'showEditInChartStudio', 'modeBarButtonsToRemove', 'modeBarButtonsToAdd', 'modeBarButtons', 'toImageButtonOptions', 'displaylogo', 'watermark', 'plotGlPixelRatio', 'setBackground', 'topojsonURL', 'mapboxAccessToken', 'logging', 'notifyOnLogging', 'queueLength', 'globalTransforms', 'locale', 'locales'
Argumen Anda: Dari grafik jumlah pelanggan setiap bulan, diketahui jumlah pelanggan terendah berada dibulan Agustus 2011 = 167 Customer. Jumlah pelanggan tertinggi berada dibulan Desember 2010 = 949 Customer.
• Gunakan Radar-charts untuk menganalisis Waktu pemesanan yang terbaru dalam (bulanan, harian, dan per-jam)
# Monthly
Monthly <- DATA %>% select(Tanggal_Faktur, No_Faktur) %>%
distinct() %>%
mutate(Month = month(Tanggal_Faktur),
Day = day(Tanggal_Faktur)) %>%
group_by(Month, Day) %>%
summarise(Total = n()) %>%
ungroup() %>%
group_by(Day) %>%
summarise(Monthly_Avg = as.integer(median(Total))) %>%
ungroup() %>%
mutate(popup = glue("Date : {Day}
Total Transaction: {Monthly_Avg}")) ## `summarise()` regrouping output by 'Month' (override with `.groups` argument)
## `summarise()` ungrouping output (override with `.groups` argument)
Monthly %>%
ggplot(aes(x=as.factor(Day), y = Monthly_Avg)) +
geom_bar(stat="identity", aes(fill = Monthly_Avg),
show.legend = FALSE)+
labs(title = "Monthly Transaction",
x = "Date",
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() -> Month
# Daily
Daily <- DATA %>% select(No_Faktur, Tanggal_Faktur) %>%
distinct() %>%
mutate(Month = month(Tanggal_Faktur),
Day = wday(Tanggal_Faktur, week_start = getOption("lubridate.week.start", 1))) %>%
group_by(Month, Day) %>%
summarise(Total = n()) %>%
ungroup() %>%
group_by(Day) %>%
summarise(Daily_Avg = as.integer(median(Total))) %>%
ungroup() %>%
mutate(popup = glue("Day : {Day}
Total Transaction: {Daily_Avg}")) ## `summarise()` regrouping output by 'Month' (override with `.groups` argument)
## `summarise()` ungrouping output (override with `.groups` argument)
Daily %>%
ggplot(aes(Day, Daily_Avg))+
geom_bar(width = 1, stat="identity", show.legend = FALSE, aes(fill = Daily_Avg))+
labs(
title = "Daily Transaction",
x = "Day",
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() -> Day
#Hour
Hours <- DATA %>% select(Tanggal_Faktur, No_Faktur) %>%
distinct() %>%
mutate(Day = day(Tanggal_Faktur),
Hour = hour(Tanggal_Faktur)) %>%
group_by(Day, Hour) %>%
summarise(Total = n()) %>%
ungroup() %>%
group_by(Hour) %>%
summarise(Hours_Avg = as.integer(median(Total))) %>%
ungroup() %>%
mutate(popup = glue("Hour of Day : {Hour}
Total Transaction: {Hours_Avg}")) ## `summarise()` regrouping output by 'Day' (override with `.groups` argument)
## `summarise()` ungrouping output (override with `.groups` argument)
Range = data_frame(Hour = c(0:23))
data_frame(Hour = c(0:23)) %>%
left_join(Hours, by="Hour") %>%
mutate(Hour = as.factor(Hour)) %>%
ggplot(aes(x = Hour, y = Hours_Avg))+
geom_bar(stat="identity",show.legend = FALSE, aes(fill = Hours_Avg))+
labs(title = "Transaction by Hours",
x = "Hour",
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() -> Hour
gridExtra::grid.arrange(Month, Day, Hour, ncol = 3)## Warning: Removed 9 rows containing missing values (position_stack).
Argumen Anda: Dari grafik diatas, semakin banyak transaksi yang terjadi, semakin gelap warna grafik potongannya. Untuk transaksi bulanan, Transaksi terjadi paling banyak di tanggal 28. Sedangkan untuk transaksi harian, paling banyak terjadi di hari Kamis. Dan untuk per-jam nya, transaksi terjadi paling banyak di jam 12 siang.
• Gunakan interaktif Bar-Chart untuk memperlihatkan berapa frekuensi transaksi setiap bulan?
Monthly <- DATA %>%
select(Tanggal_Faktur, No_Faktur) %>%
distinct() %>%
mutate(ym = format(Tanggal_Faktur, format = "%y - %m - 1"),
ym = ymd(ym)) %>%
group_by(ym) %>%
summarise(Total = n()) %>%
ungroup()## `summarise()` ungrouping output (override with `.groups` argument)
Frequency <- plot_ly(Monthly,
x = ~ym,
y = ~Total,
type = 'bar',
marker = list(color = rainbow(12),
line = list(color = "yellow",
width = 1.5)))
Frequency <- Frequency %>% layout(title = "Monthly Frequency",
xaxis = list(title = "Month",
type = "Date",
tickformat = "%b %y"),
yaxis = list(title = "Total Transaction"))
Frequency## Warning: `arrange_()` is deprecated as of dplyr 0.7.0.
## Please use `arrange()` instead.
## See vignette('programming') for more help
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.
Argumen Anda: Total frekuensi transaksi yang tertinggi berada dibulan November 2011 = 3465 Transaksi.
• Gunakan interaktif Bar-Chart yang horizontal untuk memperlihatkan 10 teratas dari produk terpopuler berdasarkan frekuensi transaksinya!
library(magrittr)
Most_Frequency <- DATA %>%
group_by(Kode_barang, Detail_Barang) %>%
summarise(Freq = n()) %>%
ungroup() %>%
arrange(desc(Freq)) %>%
head(10) %>%
mutate(Name = as.factor(Detail_Barang),
Name = reorder(Name, Freq)) %>%
ggplot(aes(x = Name,
y = Freq))+
geom_bar(stat = "identity",
aes(fill= Name, text= Freq),
show.legend = FALSE)+
labs(title = "Most Popular Product",
x=NULL,
y=NULL) +
coord_flip()## `summarise()` regrouping output by 'Kode_barang' (override with `.groups` argument)
## Warning: Ignoring unknown aesthetics: text
ggplotly(Most_Frequency, tooltip="text") %>%
layout(showlegend=FALSE) %>%
config(displayModeBar = T, scrollzoom = T)## Warning: 'config' objects don't have these attributes: 'scrollzoom'
## Valid attributes include:
## 'staticPlot', 'plotlyServerURL', 'editable', 'edits', 'autosizable', 'responsive', 'fillFrame', 'frameMargins', 'scrollZoom', 'doubleClick', 'doubleClickDelay', 'showAxisDragHandles', 'showAxisRangeEntryBoxes', 'showTips', 'showLink', 'linkText', 'sendData', 'showSources', 'displayModeBar', 'showSendToCloud', 'showEditInChartStudio', 'modeBarButtonsToRemove', 'modeBarButtonsToAdd', 'modeBarButtons', 'toImageButtonOptions', 'displaylogo', 'watermark', 'plotGlPixelRatio', 'setBackground', 'topojsonURL', 'mapboxAccessToken', 'logging', 'notifyOnLogging', 'queueLength', 'globalTransforms', 'locale', 'locales'
Argumen Anda: 10 Produk Terpopuler diatas dengan urutan pertama dipegang oleh Cream Hanging Heart T-Light Holder sebanyak 2313 Produk.
• Gunakan interaktif Bar-Chart yang horizontal untuk memperlihatkan 10 produk paling populer berdasarkan jumlah pesanan!
The_Most <- DATA %>%
group_by(Kode_barang, Detail_Barang) %>%
summarise(TotalQ = sum(Total)) %>%
ungroup() %>%
arrange(desc(TotalQ)) %>%
head(10) %>%
mutate(Name = as.factor(Detail_Barang),
Name = reorder(Name, TotalQ))## `summarise()` regrouping output by 'Kode_barang' (override with `.groups` argument)
Most_Quantity <- plot_ly(The_Most,
x = ~TotalQ,
y = ~Name,
type = 'bar',
marker = list(color = rainbow(12),
line = list(color = "white",
width = 1.5)),
orientation = "h")
Most_Quantity <- Most_Quantity %>%
layout(title = "The Most Populer Product Quantity",
xaxis = list(title = ""),
yaxis = list(title = ""))
Most_QuantityArgumen Anda: Grafik diatas menunjukkan 10 total produk terpopuler yang dijual selama 1 tahun (Desember 2010 - November 2011).
• Gunakan interaktif Bar-Chart yang horizontal untuk memperlihatkan 10 produk paling populer menurut total pelanggan!
Most_Customers <- DATA %>%
select(ID_Pelanggan, Kode_barang, Detail_Barang) %>%
distinct() %>%
group_by(Kode_barang, Detail_Barang) %>%
summarise(TotalCust = n()) %>%
ungroup() %>%
arrange(desc(TotalCust)) %>%
head(10) %>%
mutate(Desc = as.factor(Detail_Barang),
Desc = reorder(Desc, TotalCust)) %>%
ggplot(aes(x = Desc, y = TotalCust))+
geom_bar(stat="identity", aes(fill = Desc,
text = TotalCust),
show.legend = FALSE)+
labs(title="The Most Product by Customer",
x=NULL,
y=NULL)+
coord_flip()## `summarise()` regrouping output by 'Kode_barang' (override with `.groups` argument)
## Warning: Ignoring unknown aesthetics: text
ggplotly(Most_Customers, tooltip = "text") %>%
layout(showlegend=FALSE) %>%
config(displayModeBar = T, scrollzoom = F)## Warning: 'config' objects don't have these attributes: 'scrollzoom'
## Valid attributes include:
## 'staticPlot', 'plotlyServerURL', 'editable', 'edits', 'autosizable', 'responsive', 'fillFrame', 'frameMargins', 'scrollZoom', 'doubleClick', 'doubleClickDelay', 'showAxisDragHandles', 'showAxisRangeEntryBoxes', 'showTips', 'showLink', 'linkText', 'sendData', 'showSources', 'displayModeBar', 'showSendToCloud', 'showEditInChartStudio', 'modeBarButtonsToRemove', 'modeBarButtonsToAdd', 'modeBarButtons', 'toImageButtonOptions', 'displaylogo', 'watermark', 'plotGlPixelRatio', 'setBackground', 'topojsonURL', 'mapboxAccessToken', 'logging', 'notifyOnLogging', 'queueLength', 'globalTransforms', 'locale', 'locales'
Argumen Anda: Grafik diatas menunjukkan bahwa produk yang paling disukai pelanggan adalah Regency Cakestand 3 Tier dengan total 888 Produk.
• Gunakan interaktif Bar-Chart yang horizontal untuk memperlihatkan 10 produk paling populer berdasarkan Nilai Mata uang!
TheMostPrice <- DATA %>%
group_by(Kode_barang, Detail_Barang) %>%
summarise(TotalP = sum(Harga)) %>%
ungroup() %>%
arrange(desc(TotalP)) %>%
head(10) %>%
mutate(Name = as.factor(Detail_Barang),
Name = reorder(Name, TotalP))## `summarise()` regrouping output by 'Kode_barang' (override with `.groups` argument)
Most_Price <- plot_ly(TheMostPrice,
x = ~TotalP,
y = ~Name,
type = 'bar',
marker = list(color = rainbow(12),
line = list(color = "black",
width = 1.5)),
orientation="h")
Most_Price <- Most_Price %>% layout(title = "The Most Product by Price",
xaxis = list(title = ""),
yaxis = list(title = ""))
Most_PriceArgumen Anda: Dari grafik diatas product terpopuler berdasarkan harga yang paling tertinggi adalah Amazon Fee.
• Lakukan Analisa dengan menggunakan Time Series apakah penjualan berdasarkan Nilai Mata Uang Meningkat-Menurun?
Monthly_Income <- DATA %>%
group_by(Detail_Barang, Harga) %>%
summarise(Start = min(Tanggal_Faktur)) %>%
ungroup() %>%
mutate(ym = format(Start, format = "%y-%m-1"),
ym = ymd(ym)) %>%
group_by(ym) %>%
summarise(Income = sum(Harga)) %>%
ungroup() %>%
mutate(popup = glue("Month : {ym}
Income : {Income}"))## `summarise()` regrouping output by 'Detail_Barang' (override with `.groups` argument)
## `summarise()` ungrouping output (override with `.groups` argument)
Graphs <- Monthly_Income %>%
ggplot(aes(x = ym,
y = Income,
group = 1)) +
geom_line(size = 1, colour = "black") +
labs( title = "Monthly Income",
x = "Month",
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))
Daily_Income <- DATA %>%
group_by(Detail_Barang, Harga) %>%
summarise(Start = min(Tanggal_Faktur)) %>%
ungroup() %>%
mutate(ym = format(Start, format = "%y-%m-%d"),
ym = ymd(ym)) %>%
group_by(ym) %>%
summarise(Income = sum(Harga)) %>%
ungroup() %>%
mutate(popup = glue("Month : {ym}
Income : {Income}"))## `summarise()` regrouping output by 'Detail_Barang' (override with `.groups` argument)
## `summarise()` ungrouping output (override with `.groups` argument)
Graphs2 <- Daily_Income %>%
ggplot(aes(x = ym,
y = Income,
group = 1)) +
geom_line(size = 1, colour = "red") +
labs(title = "Daily & Monthly Income",
x = "Month",
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(Graphs, Graphs2, ncol = 1)Argumen Anda: Time-Series diatas memperlihatkan perubahan pendapatan yang dihasilkan perusahaan selama 1 tahun. Dapat dilihat bahwa grafik pendapatannya naik - turun. Dan memiliki pendapatan tertinggi pada bulan Juni 2011.
• Gunakan Tree-Map untuk memvisualisasikan sebagian besar Konsumen menurut Negara?
## Warning: package 'treemapify' was built under R version 4.0.3
library(scales)
Graphs <- DATA %>%
select(ID_Pelanggan, Negara) %>%
distinct() %>%
group_by(Negara) %>%
summarise(Customer = n())## `summarise()` ungrouping output (override with `.groups` argument)
Graphs %>%
ggplot(aes(fill = Negara,
area = Customer,
label = Negara))+
geom_treemap() +
geom_treemap_text(colour="black",
place = "centre")+
labs(title = "The Customer Citizen")Argumen Anda: Sebagian besar pelanggan berasal dari negara United Kingdom.
Graphs2 <- DATA %>%
select(Harga, Negara) %>%
distinct() %>%
group_by(Negara) %>%
summarise(Transaction = n())## `summarise()` ungrouping output (override with `.groups` argument)
Graphs2 %>%
ggplot(aes(fill = Negara,
area = Transaction,
label = Negara))+
geom_treemap() +
geom_treemap_text(colour="black",
place = "centre")+
labs(title = "Transaction by Country")Argumen Anda: Sebagian transaksi yang dilakukan berasal dari customer United Kingdom.
Berikan pandangan dan pendapat terkait kasus yang sudah anda kerjakan diatas (Apa yang akan anda lakukan sebagai Manager mengenai kasus tersebut untuk mengembangkan bisnis perbelanjaan online tersebut berdasarkan analisa yang anda temukan!).
Argumen Anda: Dari kasus diatas, masih banyak data yang tidak valid dan data ganda atau duplikat data, yang perlu diperbaiki. Tindakan yang harus dilakukan adalah lebih teliti dalam menginput data, sekaligus lebih meningkatkan promosi sehingga Income yang didapat lebih besar dan berusaha agar tidak menurun. Sebagian customer berasal dari United Kingdom, oleh karena itu harus meningkatkan pemasaran di negara lain. Mengeluarkan metode promosi yang menarik, dan meningkatkan pelayanan kepada pelanggan.