Email:
RPubs: https://rpubs.com/invokerarts/


Latar Belakang

Andaikan 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

1 Tugas 1

Import kedua data tersebut ke Rstudio Anda sesuai dengan jenis file masing-masing (Proses import mana yang lebih baik menurut Anda?).

DataXlsx <- read_excel("Data/Retail.xlsx")
DataXlsx
## # A tibble: 541,909 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
##  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: CustomerID <dbl>,
## #   Country <chr>
DataRds  <- readRDS("Data/Retail.rds")
DataRds
## # A tibble: 541,909 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
##  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: CustomerID <dbl>,
## #   Country <chr>

Menurut saya, import yang lebih baik adalah dari file Rds, karena mengimport file Rds tidak diperlukan packages seperti mengimport data dari excel (package readxl) dan proses pengimportan data rds lebih cepat dari pada data excel.

2 Tugas 2

Ubah nama variabel data tersebut agar lebih mudah dipelajari oleh pembaca.

names(DataRds)[names(DataRds)==names(DataRds)] <- c(
                                                    "Nomor_Invoice"   ,
                                                    "Kode_Stock"      ,
                                                    "Deskripsi"       ,
                                                    "Kuantitas"       ,
                                                    "Tanggal_Invoice" ,
                                                    "Harga_per_Barang",
                                                    "ID_Pelanggan"    ,
                                                    "Negara"
                                                   )
DataRds
## # A tibble: 541,909 x 8
##    Nomor_Invoice Kode_Stock Deskripsi Kuantitas Tanggal_Invoice    
##    <chr>         <chr>      <chr>         <dbl> <dttm>             
##  1 536365        85123A     WHITE HA~         6 2010-12-01 08:26:00
##  2 536365        71053      WHITE ME~         6 2010-12-01 08:26:00
##  3 536365        84406B     CREAM CU~         8 2010-12-01 08:26:00
##  4 536365        84029G     KNITTED ~         6 2010-12-01 08:26:00
##  5 536365        84029E     RED WOOL~         6 2010-12-01 08:26:00
##  6 536365        22752      SET 7 BA~         2 2010-12-01 08:26:00
##  7 536365        21730      GLASS ST~         6 2010-12-01 08:26:00
##  8 536366        22633      HAND WAR~         6 2010-12-01 08:28:00
##  9 536366        22632      HAND WAR~         6 2010-12-01 08:28:00
## 10 536367        84879      ASSORTED~        32 2010-12-01 08:34:00
## # ... with 541,899 more rows, and 3 more variables: Harga_per_Barang <dbl>,
## #   ID_Pelanggan <dbl>, Negara <chr>

Disini saya mengubah nama dari variabel menggunakan perintah names untuk mengubah langsung semua nama judul variabel sekaligus

3 Tugas 3

Lakukan pemeriksaan struktur data untuk mengubah jenis kumpulan data (jika ada yang perlu diubah).

glimpse(DataRds)
## Rows: 541,909
## Columns: 8
## $ Nomor_Invoice    <chr> "536365", "536365", "536365", "536365", "536365", ...
## $ Kode_Stock       <chr> "85123A", "71053", "84406B", "84029G", "84029E", "...
## $ Deskripsi        <chr> "WHITE HANGING HEART T-LIGHT HOLDER", "WHITE METAL...
## $ Kuantitas        <dbl> 6, 6, 8, 6, 6, 2, 6, 6, 6, 32, 6, 6, 8, 6, 6, 3, 2...
## $ Tanggal_Invoice  <dttm> 2010-12-01 08:26:00, 2010-12-01 08:26:00, 2010-12...
## $ Harga_per_Barang <dbl> 2.55, 3.39, 2.75, 3.39, 3.39, 7.65, 4.25, 1.85, 1....
## $ ID_Pelanggan     <dbl> 17850, 17850, 17850, 17850, 17850, 17850, 17850, 1...
## $ Negara           <chr> "United Kingdom", "United Kingdom", "United Kingdo...
DataRds$Kuantitas        <- as.integer (DataRds$Kuantitas)
DataRds$ID_Pelanggan     <- as.integer (DataRds$ID_Pelanggan)

glimpse(DataRds)
## Rows: 541,909
## Columns: 8
## $ Nomor_Invoice    <chr> "536365", "536365", "536365", "536365", "536365", ...
## $ Kode_Stock       <chr> "85123A", "71053", "84406B", "84029G", "84029E", "...
## $ Deskripsi        <chr> "WHITE HANGING HEART T-LIGHT HOLDER", "WHITE METAL...
## $ Kuantitas        <int> 6, 6, 8, 6, 6, 2, 6, 6, 6, 32, 6, 6, 8, 6, 6, 3, 2...
## $ Tanggal_Invoice  <dttm> 2010-12-01 08:26:00, 2010-12-01 08:26:00, 2010-12...
## $ Harga_per_Barang <dbl> 2.55, 3.39, 2.75, 3.39, 3.39, 7.65, 4.25, 1.85, 1....
## $ ID_Pelanggan     <int> 17850, 17850, 17850, 17850, 17850, 17850, 17850, 1...
## $ Negara           <chr> "United Kingdom", "United Kingdom", "United Kingdo...

Disini saya mengubah jenis variabel data yang saya miliki diantaranya Kuantitas(dbl menjadi integer), dan ID_Pelanggan(dbl menjadi integer)

4 Tugas 4

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:

4.1 Transaksi yang dibatalkan

DataRds <- DataRds[!grepl("C", DataRds$Nomor_Invoice),]
DataRds
## # A tibble: 532,621 x 8
##    Nomor_Invoice Kode_Stock Deskripsi Kuantitas Tanggal_Invoice    
##    <chr>         <chr>      <chr>         <int> <dttm>             
##  1 536365        85123A     WHITE HA~         6 2010-12-01 08:26:00
##  2 536365        71053      WHITE ME~         6 2010-12-01 08:26:00
##  3 536365        84406B     CREAM CU~         8 2010-12-01 08:26:00
##  4 536365        84029G     KNITTED ~         6 2010-12-01 08:26:00
##  5 536365        84029E     RED WOOL~         6 2010-12-01 08:26:00
##  6 536365        22752      SET 7 BA~         2 2010-12-01 08:26:00
##  7 536365        21730      GLASS ST~         6 2010-12-01 08:26:00
##  8 536366        22633      HAND WAR~         6 2010-12-01 08:28:00
##  9 536366        22632      HAND WAR~         6 2010-12-01 08:28:00
## 10 536367        84879      ASSORTED~        32 2010-12-01 08:34:00
## # ... with 532,611 more rows, and 3 more variables: Harga_per_Barang <dbl>,
## #   ID_Pelanggan <int>, Negara <chr>

Pada proses ini, saya menghapus transaksi yang dibatalkan (berawalan huruf C) sehingga data berkurang dari 541,909 menjadi 532,621

4.2 Faktur tidak valid

DataRds <- DataRds %>% filter(nchar(DataRds$Nomor_Invoice)==6)
DataRds
## # A tibble: 532,618 x 8
##    Nomor_Invoice Kode_Stock Deskripsi Kuantitas Tanggal_Invoice    
##    <chr>         <chr>      <chr>         <int> <dttm>             
##  1 536365        85123A     WHITE HA~         6 2010-12-01 08:26:00
##  2 536365        71053      WHITE ME~         6 2010-12-01 08:26:00
##  3 536365        84406B     CREAM CU~         8 2010-12-01 08:26:00
##  4 536365        84029G     KNITTED ~         6 2010-12-01 08:26:00
##  5 536365        84029E     RED WOOL~         6 2010-12-01 08:26:00
##  6 536365        22752      SET 7 BA~         2 2010-12-01 08:26:00
##  7 536365        21730      GLASS ST~         6 2010-12-01 08:26:00
##  8 536366        22633      HAND WAR~         6 2010-12-01 08:28:00
##  9 536366        22632      HAND WAR~         6 2010-12-01 08:28:00
## 10 536367        84879      ASSORTED~        32 2010-12-01 08:34:00
## # ... with 532,608 more rows, and 3 more variables: Harga_per_Barang <dbl>,
## #   ID_Pelanggan <int>, Negara <chr>

Pada proses ini, saya menghapus data nomor invoice (yang tidak terdiri dari 6 digit) sehingga data berkurang dari 532,621 menjadi 532,618

4.3 Kuantitas tidak valid

DataRds <- DataRds %>% filter(DataRds$Kuantitas>0)
DataRds
## # A tibble: 531,282 x 8
##    Nomor_Invoice Kode_Stock Deskripsi Kuantitas Tanggal_Invoice    
##    <chr>         <chr>      <chr>         <int> <dttm>             
##  1 536365        85123A     WHITE HA~         6 2010-12-01 08:26:00
##  2 536365        71053      WHITE ME~         6 2010-12-01 08:26:00
##  3 536365        84406B     CREAM CU~         8 2010-12-01 08:26:00
##  4 536365        84029G     KNITTED ~         6 2010-12-01 08:26:00
##  5 536365        84029E     RED WOOL~         6 2010-12-01 08:26:00
##  6 536365        22752      SET 7 BA~         2 2010-12-01 08:26:00
##  7 536365        21730      GLASS ST~         6 2010-12-01 08:26:00
##  8 536366        22633      HAND WAR~         6 2010-12-01 08:28:00
##  9 536366        22632      HAND WAR~         6 2010-12-01 08:28:00
## 10 536367        84879      ASSORTED~        32 2010-12-01 08:34:00
## # ... with 531,272 more rows, and 3 more variables: Harga_per_Barang <dbl>,
## #   ID_Pelanggan <int>, Negara <chr>

Pada proses ini, saya menghapus data kuantitas (yang memiliki kuantitas minus maupun 0) sehingga data berkurang dari 532,618 menjadi 531,282

4.4 Harga Satuan Tidak Valid

DataRds <- DataRds %>% filter(DataRds$Harga_per_Barang>0)
DataRds
## # A tibble: 530,103 x 8
##    Nomor_Invoice Kode_Stock Deskripsi Kuantitas Tanggal_Invoice    
##    <chr>         <chr>      <chr>         <int> <dttm>             
##  1 536365        85123A     WHITE HA~         6 2010-12-01 08:26:00
##  2 536365        71053      WHITE ME~         6 2010-12-01 08:26:00
##  3 536365        84406B     CREAM CU~         8 2010-12-01 08:26:00
##  4 536365        84029G     KNITTED ~         6 2010-12-01 08:26:00
##  5 536365        84029E     RED WOOL~         6 2010-12-01 08:26:00
##  6 536365        22752      SET 7 BA~         2 2010-12-01 08:26:00
##  7 536365        21730      GLASS ST~         6 2010-12-01 08:26:00
##  8 536366        22633      HAND WAR~         6 2010-12-01 08:28:00
##  9 536366        22632      HAND WAR~         6 2010-12-01 08:28:00
## 10 536367        84879      ASSORTED~        32 2010-12-01 08:34:00
## # ... with 530,093 more rows, and 3 more variables: Harga_per_Barang <dbl>,
## #   ID_Pelanggan <int>, Negara <chr>

Pada proses ini, saya menghapus data kuantitas (yang memiliki Harga minus maupun 0) sehingga data berkurang dari 531,282 menjadi 530,103

4.5 Produk Tidak Valid

DataRds  <- DataRds%>%
            filter(nchar(Kode_Stock)>=5)
 
DataRds %>% filter(nchar(Kode_Stock)>6)  %>%
            select(Kode_Stock,Deskripsi) %>%
            distinct()                   %>%
            arrange(Kode_Stock)
## # A tibble: 16 x 2
##    Kode_Stock   Deskripsi                         
##    <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
DataRds  <- DataRds%>%
            filter(!Kode_Stock %in% c("AMAZONFEE"   ,"BANK CHARGES",
                                      "DCGSSBOY"    ,"DCGSSGIRL"   ,
                                      "gift_0001_10","gift_0001_20",
                                      "gift_0001_30","gift_0001_40",
                                      "gift_0001_50"
                                     )
                  )

DataRds
## # A tibble: 527,734 x 8
##    Nomor_Invoice Kode_Stock Deskripsi Kuantitas Tanggal_Invoice    
##    <chr>         <chr>      <chr>         <int> <dttm>             
##  1 536365        85123A     WHITE HA~         6 2010-12-01 08:26:00
##  2 536365        71053      WHITE ME~         6 2010-12-01 08:26:00
##  3 536365        84406B     CREAM CU~         8 2010-12-01 08:26:00
##  4 536365        84029G     KNITTED ~         6 2010-12-01 08:26:00
##  5 536365        84029E     RED WOOL~         6 2010-12-01 08:26:00
##  6 536365        22752      SET 7 BA~         2 2010-12-01 08:26:00
##  7 536365        21730      GLASS ST~         6 2010-12-01 08:26:00
##  8 536366        22633      HAND WAR~         6 2010-12-01 08:28:00
##  9 536366        22632      HAND WAR~         6 2010-12-01 08:28:00
## 10 536367        84879      ASSORTED~        32 2010-12-01 08:34:00
## # ... with 527,724 more rows, and 3 more variables: Harga_per_Barang <dbl>,
## #   ID_Pelanggan <int>, Negara <chr>

Pada proses ini, saya menghapus data kode stock (yang memiliki kode stock tidak jelas) sehingga data berkurang dari 530,103 menjadi 527,734

4.6 Deskripsi Ganda & Stok

data.frame(
           Kode_Stock_Unik = DataRds$Kode_Stock            %>% 
                             unique()                      %>% 
                             length(),
           Deskripsi_Unik  = DataRds$Deskripsi             %>% 
                             unique()                      %>% 
                             length(),
           Kode_Gabung     = DataRds                       %>%
                             select(Kode_Stock, Deskripsi) %>%
                             distinct()                    %>%
                             nrow()
           )
##   Kode_Stock_Unik Deskripsi_Unik Kode_Gabung
## 1            3905           3999        4141
df_produk  <- DataRds                          %>% 
              arrange(desc(Tanggal_Invoice))   %>%
              select(Kode_Stock,Deskripsi)     %>% 
              distinct()

df_produk %>% group_by(Kode_Stock)             %>%  
              summarise(Jumlah_Deskripsi=n())  %>%
              ungroup()                        %>% 
              filter(Jumlah_Deskripsi>1)
## # A tibble: 217 x 2
##    Kode_Stock Jumlah_Deskripsi
##    <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
df_produk  <- df_produk             %>% 
              group_by(Kode_Stock)  %>% 
              slice(1)

DataRds    <- DataRds                                   %>% 
              left_join(df_produk , by=c("Kode_Stock")) %>% 
              mutate(Deskripsi=Deskripsi.y)             %>% 
              select(-Deskripsi.x,-Deskripsi.y)

data_frame(
           Kode_Stock_Unik  = DataRds$Kode_Stock                   %>% 
                             unique()                              %>% 
                             length(),
           Deskripsi_Unik   = DataRds$Deskripsi                    %>%
                             unique()                              %>%
                             length(),
           Kode_Gabung      = DataRds                              %>%
                             select(Kode_Stock,Deskripsi)          %>% 
                             distinct()                            %>%
                             nrow()
          )
## # A tibble: 1 x 3
##   Kode_Stock_Unik Deskripsi_Unik Kode_Gabung
##             <int>          <int>       <int>
## 1            3905           3770        3905
df_deskripsi <- DataRds                        %>% 
                arrange(desc(Tanggal_Invoice)) %>%
                select(Kode_Stock,Deskripsi)   %>% 
                distinct()

df_deskripsi <- df_deskripsi        %>% 
                group_by(Deskripsi) %>% 
                slice(1)

DataRds <- DataRds %>% left_join(df_deskripsi , by=c("Deskripsi")) %>% 
                mutate(Kode_Stock=Kode_Stock.y)                    %>% 
                select(-Kode_Stock.x,-Kode_Stock.y)

data_frame(
           Kode_Stock_Unik  = DataRds$Kode_Stock                   %>% 
                              unique()                             %>% 
                              length(),
           Deskripsi_Unik   = DataRds$Deskripsi                    %>%
                              unique()                             %>%
                              length(),
           Kode_Gabung      = DataRds                              %>%
                              select(Kode_Stock,Deskripsi)         %>% 
                              distinct()                           %>%
                              nrow()
          )
## # A tibble: 1 x 3
##   Kode_Stock_Unik Deskripsi_Unik Kode_Gabung
##             <int>          <int>       <int>
## 1            3770           3770        3770

Pada proses ini, saya meungubah data berdasarkan Kode Stock dan Deskripsinya (yang memiliki kode stock dan deskripsi yang tidak sama) sehingga setelah diatur, setiap 1 kode stock memiliki deskripsi yang sama.

4.7 Kewarganegaraan Tidak Valid

data_frame(
           ID_Pelanggan_unik = DataRds              %>% 
                               select(ID_Pelanggan) %>%
                               distinct()           %>% 
                               nrow(),
           Negara_unik       = DataRds                     %>% 
                               select(ID_Pelanggan,Negara) %>% 
                               distinct()                  %>% 
                               nrow()
          )
## # A tibble: 1 x 2
##   ID_Pelanggan_unik Negara_unik
##               <int>       <int>
## 1              4335        4351
df_negara <- DataRds %>% 
             arrange(desc(Tanggal_Invoice,ID_Pelanggan))  %>% 
             select(ID_Pelanggan, Negara)                 %>% 
             group_by(ID_Pelanggan)                       %>% 
             slice(1)

DataRds   <- DataRds                                      %>% 
             select(-Negara)                              %>% 
             left_join(df_negara, by = c("ID_Pelanggan"))


data_frame(
           Pelanggan_unik   = DataRds                     %>% 
                              select(ID_Pelanggan)        %>% 
                              distinct()                  %>% 
                              nrow(),
           Pelanggan_Negara = DataRds                     %>% 
                              select(ID_Pelanggan,Negara) %>% 
                              distinct()                  %>% 
                              nrow())
## # A tibble: 1 x 2
##   Pelanggan_unik Pelanggan_Negara
##            <int>            <int>
## 1           4335             4335

Pada proses ini, saya meungubah data berdasarkan ID Pelanggan dan Negaranya (yang memiliki ID pelanggan di negara di negara yang berbeda) sehingga setelah diatur, setiap 1 ID Pelanggan memiliki Negara yang sama.

4.8 Pemutusan Berkala

DataRds <- DataRds %>% 
           filter(ymd(as.Date(DataRds$Tanggal_Invoice)) < ymd("2011-12-1"))
DataRds
## # A tibble: 502,704 x 8
##    Nomor_Invoice Kuantitas Tanggal_Invoice     Harga_per_Barang ID_Pelanggan
##    <chr>             <int> <dttm>                         <dbl>        <int>
##  1 536365                6 2010-12-01 08:26:00             2.55        17850
##  2 536365                6 2010-12-01 08:26:00             3.39        17850
##  3 536365                8 2010-12-01 08:26:00             2.75        17850
##  4 536365                6 2010-12-01 08:26:00             3.39        17850
##  5 536365                6 2010-12-01 08:26:00             3.39        17850
##  6 536365                2 2010-12-01 08:26:00             7.65        17850
##  7 536365                6 2010-12-01 08:26:00             4.25        17850
##  8 536366                6 2010-12-01 08:28:00             1.85        17850
##  9 536366                6 2010-12-01 08:28:00             1.85        17850
## 10 536367               32 2010-12-01 08:34:00             1.69        13047
## # ... with 502,694 more rows, and 3 more variables: Deskripsi <chr>,
## #   Kode_Stock <chr>, Negara <chr>

Pada proses ini, saya menghapus data berdasarkan Tanggal Invoicenya (yang memiliki Tanggal lebih dari lebih dari tanggal 31 November) sehingga setelah diatur, data berkurang dari 527,734 menjadi 502,704

4.9 Data Duplikat

data.frame(
           Baris_Data      = DataRds    %>% 
                             nrow(),
           Baris_Unik_Data = DataRds    %>% 
                             distinct() %>% 
                             nrow()
          )
##   Baris_Data Baris_Unik_Data
## 1     502704          497681
DataRds <- DataRds %>% 
           distinct()
DataRds
## # A tibble: 497,681 x 8
##    Nomor_Invoice Kuantitas Tanggal_Invoice     Harga_per_Barang ID_Pelanggan
##    <chr>             <int> <dttm>                         <dbl>        <int>
##  1 536365                6 2010-12-01 08:26:00             2.55        17850
##  2 536365                6 2010-12-01 08:26:00             3.39        17850
##  3 536365                8 2010-12-01 08:26:00             2.75        17850
##  4 536365                6 2010-12-01 08:26:00             3.39        17850
##  5 536365                6 2010-12-01 08:26:00             3.39        17850
##  6 536365                2 2010-12-01 08:26:00             7.65        17850
##  7 536365                6 2010-12-01 08:26:00             4.25        17850
##  8 536366                6 2010-12-01 08:28:00             1.85        17850
##  9 536366                6 2010-12-01 08:28:00             1.85        17850
## 10 536367               32 2010-12-01 08:34:00             1.69        13047
## # ... with 497,671 more rows, and 3 more variables: Deskripsi <chr>,
## #   Kode_Stock <chr>, Negara <chr>

Pada proses ini, saya menghapus data berdasarkan seluruh data (yang memiliki data yang sama) sehingga setelah diatur, data berkurang dari 502,704 menjadi 497,681

4.10 Fitur ekstraksi

DataRds <- DataRds                                          %>% 
           mutate(Total_Harga = Kuantitas*Harga_per_Barang) %>% 
           select(
                  Nomor_Invoice,Tanggal_Invoice   ,ID_Pelanggan,
                  Negara       ,Kode_Stock        ,Deskripsi   ,
                  Kuantitas    ,Harga_per_Barang  ,Total_Harga
                 )
DataRds
## # A tibble: 497,681 x 9
##    Nomor_Invoice Tanggal_Invoice     ID_Pelanggan Negara Kode_Stock Deskripsi
##    <chr>         <dttm>                     <int> <chr>  <chr>      <chr>    
##  1 536365        2010-12-01 08:26:00        17850 Unite~ 85123A     CREAM HA~
##  2 536365        2010-12-01 08:26:00        17850 Unite~ 71053      WHITE MO~
##  3 536365        2010-12-01 08:26:00        17850 Unite~ 84406B     CREAM CU~
##  4 536365        2010-12-01 08:26:00        17850 Unite~ 84029G     KNITTED ~
##  5 536365        2010-12-01 08:26:00        17850 Unite~ 84029E     RED WOOL~
##  6 536365        2010-12-01 08:26:00        17850 Unite~ 22752      SET 7 BA~
##  7 536365        2010-12-01 08:26:00        17850 Unite~ 21730      GLASS ST~
##  8 536366        2010-12-01 08:28:00        17850 Unite~ 22633      HAND WAR~
##  9 536366        2010-12-01 08:28:00        17850 Unite~ 22632      HAND WAR~
## 10 536367        2010-12-01 08:34:00        13047 Unite~ 84879      ASSORTED~
## # ... with 497,671 more rows, and 3 more variables: Kuantitas <int>,
## #   Harga_per_Barang <dbl>, Total_Harga <dbl>

Pada proses ini, saya menambahkan variabel baru bernama total (didapat dari kuantitas dikali dengan harga per barang

4.11 Nilai yang hilang

colSums(is.na(DataRds))
##    Nomor_Invoice  Tanggal_Invoice     ID_Pelanggan           Negara 
##                0                0           123540                0 
##       Kode_Stock        Deskripsi        Kuantitas Harga_per_Barang 
##                0                0                0                0 
##      Total_Harga 
##                0
df_transaksi_pelanggan <- drop_na(DataRds)
df_produk_terpersonal  <- DataRds %>% select(ID_Pelanggan,Nomor_Invoice,Kode_Stock,Deskripsi)

DataRds <- na.omit(DataRds)
DataRds
## # A tibble: 374,141 x 9
##    Nomor_Invoice Tanggal_Invoice     ID_Pelanggan Negara Kode_Stock Deskripsi
##    <chr>         <dttm>                     <int> <chr>  <chr>      <chr>    
##  1 536365        2010-12-01 08:26:00        17850 Unite~ 85123A     CREAM HA~
##  2 536365        2010-12-01 08:26:00        17850 Unite~ 71053      WHITE MO~
##  3 536365        2010-12-01 08:26:00        17850 Unite~ 84406B     CREAM CU~
##  4 536365        2010-12-01 08:26:00        17850 Unite~ 84029G     KNITTED ~
##  5 536365        2010-12-01 08:26:00        17850 Unite~ 84029E     RED WOOL~
##  6 536365        2010-12-01 08:26:00        17850 Unite~ 22752      SET 7 BA~
##  7 536365        2010-12-01 08:26:00        17850 Unite~ 21730      GLASS ST~
##  8 536366        2010-12-01 08:28:00        17850 Unite~ 22633      HAND WAR~
##  9 536366        2010-12-01 08:28:00        17850 Unite~ 22632      HAND WAR~
## 10 536367        2010-12-01 08:34:00        13047 Unite~ 84879      ASSORTED~
## # ... with 374,131 more rows, and 3 more variables: Kuantitas <int>,
## #   Harga_per_Barang <dbl>, Total_Harga <dbl>

Pada proses ini, saya menghapus data berdasarkan seluruh data (yang memiliki data yang sama) sehingga setelah diatur, data berkurang dari 497,681 menjadi 374,141

5 Tugas 5

Simpan data yang sudah Anda bersihkan ke dalam folder dalam format .json atau .xml atau .rds.

saveRDS(DataRds,"DataUAS")

6 Tugas 6

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:

• Gunakan Bar-Chart untuk memperlihatkan berapa banyak pelanggan yang melakukan transaksi setiap bulan?

Customer_per_Bulan   <- DataRds                               %>%
                        select(Tanggal_Invoice, ID_Pelanggan) %>%
                        distinct()                            %>%
                        mutate(yearmonth = format(Tanggal_Invoice, format = "%y-%b-1"),
                               yearmonth = ymd(yearmonth))    %>%
                        group_by(yearmonth)                   %>%
                        summarise(total= n())                 %>%
                        ungroup()
Customer_per_Bulan
## # A tibble: 12 x 2
##    yearmonth  total
##    <date>     <int>
##  1 2010-12-01  1383
##  2 2011-01-01   984
##  3 2011-02-01   993
##  4 2011-03-01  1310
##  5 2011-04-01  1142
##  6 2011-05-01  1539
##  7 2011-06-01  1380
##  8 2011-07-01  1312
##  9 2011-08-01  1263
## 10 2011-09-01  1717
## 11 2011-10-01  1886
## 12 2011-11-01  2629
ggplot(Customer_per_Bulan,
       aes(x = yearmonth, y = total))                                            +
       geom_bar(width=24, fill = rainbow(12), color="azure4", stat= "identity" ) +
       theme_minimal()                                                           +
       labs(
            x     = "Bulan"   ,
            y     = "Customer",
            title = "Transaksi Pelanggan Setiap Bulan"
           )                                                         + 
       theme(axis.text.x   = element_text(angle = -45, hjust = -.2)) +
       scale_x_date(breaks = date_breaks('1 month'),
       labels              = date_format("%b %y"))

Pada proses ini, saya menunjukan data menggunakan grafik batang untuk mempermudah pembacaan data(Transaksi per bulan)

• Gunakan interaktif Line-Chart untuk memperlihatkan bagaimana pertumbuhan pelanggan baru setiap bulan?

df_pertumbuhan <- DataRds %>% 
                  group_by(ID_Pelanggan) %>% 
                  summarise(pertama = min(Tanggal_Invoice)) %>% 
                  ungroup() %>% 
                  mutate(yearmonth = format(pertama, format="%Y-%m-1"),
                  yearmonth = ymd(yearmonth)) %>%
                  group_by(yearmonth) %>% 
                  summarise(total_new_customer = n()) %>% 
                  ungroup() %>% 
                  mutate(popup=glue(
                                    "Year-Month    : {yearmonth}
                                    Total Customer : {total_new_customer}"
                                   )
                         )

plot_pertumbuhan <- df_pertumbuhan %>% 
  ggplot(aes(x=yearmonth,total_new_customer))+
  geom_line(size=1)+
  geom_point(colour="#FF0000", size=2, aes(text=popup))+
  labs(
    title = "Total Growth of New Customer per Month",
    x = "Month-Year",
    y = NULL
  )+
  scale_x_date(breaks=date_breaks('1 months'),
     labels=date_format('%b %y'))

ggplotly(plot_pertumbuhan, tooltip="text") %>% 
  config(displayModeBar = F, scrollzoom = F)

Pada proses ini, saya menunjukan data menggunakan grafik garis untuk mempermudah pembacaan data (pertumbuhan pelanggan baru setiap bulan)

• Gunakan Radar-charts untuk menganalisis Waktu pemesanan yang terbaru dalam (bulanan, harian, dan per-jam)

# Bulanan

df_bulanan <- DataRds %>% select(Tanggal_Invoice,Nomor_Invoice) %>% 
              distinct() %>%
              mutate(month = month(Tanggal_Invoice),
              day = day(Tanggal_Invoice)) %>% 
              group_by(month,day) %>% 
              summarise(total = n()) %>% 
              ungroup() %>% 
              group_by(day) %>% 
              summarise(rata2_bulanan = as.integer(median(total))) %>% 
              ungroup() %>% 
              mutate(popup = glue("Date : {day}
                                  Total Transaction: {rata2_bulanan}")) 

df_bulanan %>% 
  ggplot(aes(x=as.factor(day), y=rata2_bulanan)) +
  geom_bar(stat="identity", aes(fill=rata2_bulanan),show.legend = FALSE)+
  labs(title = "Pemesanan Per Bulan",
    x = "Date", 
    y = NULL)+
  theme_minimal()+
  scale_fill_gradient(low = "#C7CFB2", high="#000000")+
  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() -> bulanan

# Harian

df_harian <- DataRds %>% select(Nomor_Invoice,Tanggal_Invoice) %>% 
  distinct() %>% 
  mutate(month = month(Tanggal_Invoice),
        wday = wday(Tanggal_Invoice,week_start = getOption("lubridate.week.start", 1))) %>% 
  group_by(month,wday) %>% 
  summarise(total = n()) %>% 
  ungroup() %>% 
  group_by(wday) %>% 
  summarise(Rata2_Transaksi_per_Hari = as.integer(median(total))) %>% 
  ungroup() %>% 
  mutate(popup = glue("wday : {wday}
                       Total Transaction: {Rata2_Transaksi_per_Hari}")) 


df_harian %>% 
    ggplot(aes(wday,Rata2_Transaksi_per_Hari))+
    geom_bar(width=1, stat="identity", show.legend = FALSE, aes(fill=Rata2_Transaksi_per_Hari))+
    labs(
      title = "Pemesanan Per Harian",
      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 = "#C7CFB2", high="#000000")+
    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() -> harian
 
# Per-jam

df_per_Jam <- DataRds %>% select(Tanggal_Invoice,Nomor_Invoice) %>% 
  distinct() %>%
  mutate(day = day(Tanggal_Invoice),
         hour = hour(Tanggal_Invoice)) %>% 
  group_by(day,hour) %>% 
  summarise(total = n()) %>% 
  ungroup() %>% 
  group_by(hour) %>% 
  summarise(Rata2_Transaksi_per_Jam = as.integer(median(total))) %>% 
  ungroup() %>% 
  mutate(popup = glue("Hour of Day : {hour}
                       Total Transaction: {Rata2_Transaksi_per_Jam}")) 

time_range = data_frame(hour = c(0:23))

data_frame(hour = c(0:23)) %>% 
  left_join(
    df_per_Jam ,by=c("hour")) %>%
  mutate(hour = as.factor(hour)) %>% 
  ggplot(aes(x=hour,y=Rata2_Transaksi_per_Jam))+
  geom_bar(stat="identity",show.legend = FALSE, aes(fill=Rata2_Transaksi_per_Jam))+
  labs(title = "Pesanan Per Jam",
    x = "Hour of Day", 
    y = NULL)+
  theme_minimal()+
  scale_fill_gradient(low = "#C7CFB2", high="#000000")+
  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() -> perjam


grid.arrange(bulanan,harian,perjam, ncol = 3)

Pada proses ini, saya menunjukan data menggunakan grafik radar untuk mempermudah pembacaan data (data pemesanan per bulan, hari, dan jam). Semakin gelap data semakin banyak jumlah datanya

• Gunakan interaktif Bar-Chart untuk memperlihatkan berapa frekuensi transaksi setiap bulan?

Transaksi_per_Bulan <- DataRds %>%
                       select(Tanggal_Invoice,Nomor_Invoice) %>%
                       distinct() %>%
                       mutate (yearmonth = format (Tanggal_Invoice, format = "%y-%m-1"),
                               yearmonth = ymd(yearmonth)) %>%
                       group_by (yearmonth) %>%
                       summarise(Total_Transaksi=n()) %>%
                       ungroup()

Frekuensi_per_Bulan <- plot_ly(Transaksi_per_Bulan,
                               x      = ~yearmonth,
                               y      = ~Total_Transaksi,
                               type   = 'bar',
                               market = list(
                                             color = rainbow(12),
                                             line   = list (color = "black",
                                                            width = 1.5)
                                            )
                              )
Frekuensi_per_Bulan

Pada proses ini, saya menunjukan data menggunakan grafik batang yang memiliki fitur tambahan untuk mempermudah pembacaan data (data pemesanan frekuensi transaksi per bulan).

• Gunakan interaktif Bar-Chart yang horizontal untuk memperlihatkan 10 teratas dari produk terpopuler berdasarkan frekuensi transaksinya!

Produk_Populer <- DataRds                        %>% 
                  group_by(Kode_Stock,Deskripsi) %>% 
                  summarise(Frekuensi = n())     %>% 
                  ungroup()                      %>% 
                  arrange(desc(Frekuensi))       %>% 
                  head(10)                       %>% 
                  mutate(Deskripsi = as.factor(Deskripsi),
                         Deskripsi = reorder(Deskripsi,Frekuensi)) %>% 
                  ggplot(aes(x=Deskripsi, y=Frekuensi))                                               +
                  geom_bar(stat="identity", aes(fill=Deskripsi, text=Frekuensi), show.legend = FALSE) +
                  labs(title = "10 Barang Terpoluper Menurut Frekuensi Transaksi", x = NULL)          +
                  coord_flip()
## `summarise()` regrouping output by 'Kode_Stock' (override with `.groups` argument)
## Warning: Ignoring unknown aesthetics: text
ggplotly(Produk_Populer, 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'

Pada proses ini, saya menunjukan data menggunakan grafik batang secara horizontal yang memiliki fitur tambahan untuk mempermudah pembacaan data (data pemesanan frekuensi transaksinya).

• Gunakan interaktif Bar-Chart yang horizontal untuk memperlihatkan 10 produk paling populer berdasarkan jumlah pesanan!

Produk_Populer_Kuantitas <- DataRds                           %>% 
                            group_by(Kode_Stock,Deskripsi)    %>% 
                            summarise(Total = sum(Kuantitas)) %>% 
                            ungroup()                         %>% 
                            arrange(desc(Total))              %>% 
                            head(10)                          %>% 
                            mutate(Deskripsi = as.factor(Deskripsi),
                                   Deskripsi = reorder(Deskripsi,Total)) %>% 
                            ggplot(aes(x=Deskripsi, y=Total))                                               +
                            geom_bar(stat="identity", aes(fill=Deskripsi, text=Total), show.legend = FALSE) +
                            labs(title = "10 Barang Terpoluper Menurut Banyak Pesanan", x = NULL)           +
                            coord_flip()
## `summarise()` regrouping output by 'Kode_Stock' (override with `.groups` argument)
## Warning: Ignoring unknown aesthetics: text
ggplotly(Produk_Populer_Kuantitas, 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'

Pada proses ini, saya menunjukan data menggunakan grafik batang secara horizontal yang memiliki fitur tambahan untuk mempermudah pembacaan data (data 10 barang terpopuler berdasarkan jumlah pesanan).

• Gunakan interaktif Bar-Chart yang horizontal untuk memperlihatkan 10 produk paling populer menurut total pelanggan!

Produk_Populer_Pelanggan <- DataRds                                     %>% 
                            select(ID_Pelanggan, Kode_Stock, Deskripsi) %>% 
                            distinct()                                  %>% 
                            group_by(Kode_Stock,Deskripsi)              %>% 
                            summarise(Pelanggan= n())                   %>% 
                            ungroup()                                   %>% 
                            arrange(desc(Pelanggan))                    %>% 
                            head(10)                                    %>% 
                            mutate(Deskripsi = as.factor(Deskripsi),
                                   Deskripsi = reorder(Deskripsi,Pelanggan)) %>% 
                            ggplot(aes(x=Deskripsi, y=Pelanggan))                                               +
                            geom_bar(stat="identity", aes(fill=Deskripsi, text=Pelanggan), show.legend = FALSE) +
                            labs(title = "10 Barang Terpoluper Menurut Total Customer", x = NULL)                                  +
                            coord_flip()
## `summarise()` regrouping output by 'Kode_Stock' (override with `.groups` argument)
## Warning: Ignoring unknown aesthetics: text
ggplotly(Produk_Populer_Pelanggan, 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'

Pada proses ini, saya menunjukan data menggunakan grafik batang secara horizontal yang memiliki fitur tambahan untuk mempermudah pembacaan data (data 10 barang terpopuler berdasarkan total pelanggan).

• Gunakan interaktif Bar-Chart yang horizontal untuk memperlihatkan 10 produk paling populer berdasarkan Nilai Mata uang!

Produk_Populer_Mata_Uang <- DataRds                                     %>%
                            group_by(Kode_Stock,Deskripsi)              %>% 
                            summarise(Total= sum(Total_Harga))          %>% 
                            ungroup()                                   %>% 
                            arrange(desc(Total))                        %>% 
                            head(10)                                    %>% 
                            mutate(Deskripsi = as.factor(Deskripsi),
                                   Deskripsi = reorder(Deskripsi,Total)) %>% 
                            ggplot(aes(x=Deskripsi, y=Total))                                               +
                            geom_bar(stat="identity", aes(fill=Deskripsi, text=Total), show.legend = FALSE) +
                            labs(title = "10 Barang Terpoluper Menurut Nilai Mata Uang", x = NULL)          +
                            coord_flip()
## `summarise()` regrouping output by 'Kode_Stock' (override with `.groups` argument)
## Warning: Ignoring unknown aesthetics: text
ggplotly(Produk_Populer_Mata_Uang, 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'

Pada proses ini, saya menunjukan data menggunakan grafik batang secara horizontal yang memiliki fitur tambahan untuk mempermudah pembacaan data (data 10 barang terpopuler berdasarkan nilai mata uang).

• Lakukan Analisa dengan menggunakan Time Series apakah penjualan berdasarkan Nilai Mata Uang Meningkat-Menurun?

df_penjualan <- DataRds %>% 
                  group_by(Deskripsi,Total_Harga) %>% 
                  summarise(order = min(Tanggal_Invoice)) %>% 
                  ungroup() %>% 
                  mutate(yearmonth = as.yearmon(order)) %>%
                  group_by(yearmonth) %>% 
                  summarise(total = sum(Total_Harga)) %>% 
                  ungroup() %>% 
                  mutate(USD = dollar(total),
                         detail = glue(
                                       "Bulan    : {yearmonth}
                                        Penjualan : {USD}"
                                   )
                         )

plot_penjualan <- ggplot(df_penjualan,
                         aes(x=yearmonth,
                             y=total,
                             group=1))+
                         geom_line()+
                         geom_point(colour="#FF0000", size=2, aes(text=detail))+
                         labs(
                           title = "Penjualan per Bulan",
                           x = "Bulan",
                           y = "USD"
                         )+
                         scale_y_continuous(
                                            label = scales::format_format(big.mark =".",
                                                    decimal.mark = ",",
                                                    scientific = F)
                                           )

ggplotly(plot_penjualan, tooltip="text")

Pada proses ini, saya menunjukan data menggunakan grafik garis yang memiliki fitur tambahan untuk mempermudah pembacaan data (data [10 barang terpopuler berdasarkan total pelangganpenjualan dari bulan ke bulan). Pada grafik ini dapat dilihan bahwa terjadi lebih banyak penurunan penjualan. Penurunan paling tinggi terjadi pada bulan Februari 2011 dengan total penjualan sebesar $120,347 dan sempat naik pesat pada bulan September 2011 kemudian turun lagi sampai tanggal data terakhir yaitu bulan November 2011

• Gunakan Tree-Map untuk memvisualisasikan sebagian besar Konsumen menurut Negara?

treemap(DataRds,
        index      = c("Negara"),
        vSize      = "Kuantitas",
        title      = "Tree Map Konsumen per Negara",
        border.col = "black")

Pada proses ini, saya menunjukan data menggunakan treemap. Dapat dilihat bahwa konsumen sebagian besar berasal dari United Kingdom, kemudian diikuti dari Belanda

7 Tugas 7

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!).

Menurut saya total konsumen pada negara UK dapat dijadikan menjadi sumber utama dari penghasilan bisnis online tersebut sehingga merekrut beberapa dropshipper yang dapat membantu mempercepat penyebaran informasi di daerah-daerah terutana UK karena hampir seluruh konsumen dari bisnis pembelanjaan online ini berasal dari UK yang menunjukan produk itu cocok bagi warga negara tersebut.