Mengaktifkan Packages

library(dplyr)
## 
## 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
library(ggplot2)

Import Data

data_pelanggan <- data.frame(
  ID = c(101,102,103,104,105,106,107,108,109,110,
         111,112,113,114,115,116,117,118,119,120),

  Nama = c("Andi","Budi","Citra","Dina","Eka",
           "Fajar","Gina","Hadi","Intan","Joko",
           "Kiki","Lina","Maya","Nanda","Oki",
           "Putri","Rian","Sinta","Tono","Vina"),

  Kota = c("Solo","Semarang","Solo","Yogyakarta","Semarang",
           "Solo","Klaten","Yogyakarta","Solo","Klaten",
           "Semarang","Solo","Yogyakarta","Klaten","Solo",
           "Semarang","Yogyakarta","Solo","Klaten","Semarang"),

  Umur = c(19,21,20,25,22,31,27,24,19,35,
           28,23,26,30,21,32,29,20,34,22),

  Total_Belanja = c(
    2500000, 5200000, 1750000, 6800000, 4300000,
    7200000, 3100000, 8500000, 1200000, 4700000,
    6200000, 2900000, 9100000, 3800000, 5600000,
    7500000, 4500000, 2300000, 6700000, 3400000
  )
)

Menampilkan Seluruh Data

head(data_pelanggan)
##    ID  Nama       Kota Umur Total_Belanja
## 1 101  Andi       Solo   19       2500000
## 2 102  Budi   Semarang   21       5200000
## 3 103 Citra       Solo   20       1750000
## 4 104  Dina Yogyakarta   25       6800000
## 5 105   Eka   Semarang   22       4300000
## 6 106 Fajar       Solo   31       7200000

Menampilkan 5 Data Pertama

head(data_pelanggan,5)
##    ID  Nama       Kota Umur Total_Belanja
## 1 101  Andi       Solo   19       2500000
## 2 102  Budi   Semarang   21       5200000
## 3 103 Citra       Solo   20       1750000
## 4 104  Dina Yogyakarta   25       6800000
## 5 105   Eka   Semarang   22       4300000

Menampilkan Kolom Nama, Kota, Umur, dan Total_Belanja

data_pilihan <- select(data_pelanggan, Nama, Kota, Umur, Total_Belanja)
data_pilihan
##     Nama       Kota Umur Total_Belanja
## 1   Andi       Solo   19       2500000
## 2   Budi   Semarang   21       5200000
## 3  Citra       Solo   20       1750000
## 4   Dina Yogyakarta   25       6800000
## 5    Eka   Semarang   22       4300000
## 6  Fajar       Solo   31       7200000
## 7   Gina     Klaten   27       3100000
## 8   Hadi Yogyakarta   24       8500000
## 9  Intan       Solo   19       1200000
## 10  Joko     Klaten   35       4700000
## 11  Kiki   Semarang   28       6200000
## 12  Lina       Solo   23       2900000
## 13  Maya Yogyakarta   26       9100000
## 14 Nanda     Klaten   30       3800000
## 15   Oki       Solo   21       5600000
## 16 Putri   Semarang   32       7500000
## 17  Rian Yogyakarta   29       4500000
## 18 Sinta       Solo   20       2300000
## 19  Tono     Klaten   34       6700000
## 20  Vina   Semarang   22       3400000

Melihat Struktur Data

str(data_pelanggan)
## 'data.frame':    20 obs. of  5 variables:
##  $ ID           : num  101 102 103 104 105 106 107 108 109 110 ...
##  $ Nama         : chr  "Andi" "Budi" "Citra" "Dina" ...
##  $ Kota         : chr  "Solo" "Semarang" "Solo" "Yogyakarta" ...
##  $ Umur         : num  19 21 20 25 22 31 27 24 19 35 ...
##  $ Total_Belanja: num  2500000 5200000 1750000 6800000 4300000 7200000 3100000 8500000 1200000 4700000 ...

Pelanggan yang Tinggal di Solo

data_pelanggan %>%
  filter(Kota == "Solo")
##    ID  Nama Kota Umur Total_Belanja
## 1 101  Andi Solo   19       2500000
## 2 103 Citra Solo   20       1750000
## 3 106 Fajar Solo   31       7200000
## 4 109 Intan Solo   19       1200000
## 5 112  Lina Solo   23       2900000
## 6 115   Oki Solo   21       5600000
## 7 118 Sinta Solo   20       2300000

Pelanggan yang Memiliki Total Belanja > 5.000.000

data_pelanggan %>%
  filter(Total_Belanja > 5000000)
##    ID  Nama       Kota Umur Total_Belanja
## 1 102  Budi   Semarang   21       5200000
## 2 104  Dina Yogyakarta   25       6800000
## 3 106 Fajar       Solo   31       7200000
## 4 108  Hadi Yogyakarta   24       8500000
## 5 111  Kiki   Semarang   28       6200000
## 6 113  Maya Yogyakarta   26       9100000
## 7 115   Oki       Solo   21       5600000
## 8 116 Putri   Semarang   32       7500000
## 9 119  Tono     Klaten   34       6700000

Pelanggan yang Tinggal di Solo dan Memiliki Total Belanja > 5.000.000

data_pelanggan %>%
  filter(
    Kota == "Solo",
    Total_Belanja > 5000000
  )
##    ID  Nama Kota Umur Total_Belanja
## 1 106 Fajar Solo   31       7200000
## 2 115   Oki Solo   21       5600000

pelanggan yang Tinggal di Yogyakarta atau Memiliki Total Belanja > 7.000.000

data_pelanggan %>%
  filter(
    Kota == "Yogyakarta"|
    Total_Belanja > 7000000
  )
##    ID  Nama       Kota Umur Total_Belanja
## 1 104  Dina Yogyakarta   25       6800000
## 2 106 Fajar       Solo   31       7200000
## 3 108  Hadi Yogyakarta   24       8500000
## 4 113  Maya Yogyakarta   26       9100000
## 5 116 Putri   Semarang   32       7500000
## 6 117  Rian Yogyakarta   29       4500000

Rata-Rata Umur

mean(data_pelanggan$Umur)
## [1] 25.4

Umur Minimum

min(data_pelanggan$Umur)
## [1] 19

Umur Maksimum

max(data_pelanggan$Umur)
## [1] 35

Rata-Rata Total Belanja

mean(data_pelanggan$Total_Belanja)
## [1] 4862500

Total Seluruh Belanja

sum(data_pelanggan$Total_Belanja)
## [1] 97250000

Belanja Minimum

min(data_pelanggan$Total_Belanja)
## [1] 1200000

Belanja Maksimum

max(data_pelanggan$Total_Belanja)
## [1] 9100000

Menambahkan Kolom Kategori Belanja

data_tambahan <- mutate(data_pelanggan, Kategori_Belanja = case_when(
  Total_Belanja < 3000000 ~ "Rendah",
  Total_Belanja >= 3000000 & Total_Belanja <= 6000000 ~ "Sedang",
  Total_Belanja > 6000000 ~ "Tinggi"
  )
)
data_tambahan
##     ID  Nama       Kota Umur Total_Belanja Kategori_Belanja
## 1  101  Andi       Solo   19       2500000           Rendah
## 2  102  Budi   Semarang   21       5200000           Sedang
## 3  103 Citra       Solo   20       1750000           Rendah
## 4  104  Dina Yogyakarta   25       6800000           Tinggi
## 5  105   Eka   Semarang   22       4300000           Sedang
## 6  106 Fajar       Solo   31       7200000           Tinggi
## 7  107  Gina     Klaten   27       3100000           Sedang
## 8  108  Hadi Yogyakarta   24       8500000           Tinggi
## 9  109 Intan       Solo   19       1200000           Rendah
## 10 110  Joko     Klaten   35       4700000           Sedang
## 11 111  Kiki   Semarang   28       6200000           Tinggi
## 12 112  Lina       Solo   23       2900000           Rendah
## 13 113  Maya Yogyakarta   26       9100000           Tinggi
## 14 114 Nanda     Klaten   30       3800000           Sedang
## 15 115   Oki       Solo   21       5600000           Sedang
## 16 116 Putri   Semarang   32       7500000           Tinggi
## 17 117  Rian Yogyakarta   29       4500000           Sedang
## 18 118 Sinta       Solo   20       2300000           Rendah
## 19 119  Tono     Klaten   34       6700000           Tinggi
## 20 120  Vina   Semarang   22       3400000           Sedang

Menampilkan Kolom Nama, Total_Belanja, dan Kategori_Belanja

data_tambahan_pilihan <- select(data_tambahan, Nama, Total_Belanja, Kategori_Belanja)
data_tambahan_pilihan
##     Nama Total_Belanja Kategori_Belanja
## 1   Andi       2500000           Rendah
## 2   Budi       5200000           Sedang
## 3  Citra       1750000           Rendah
## 4   Dina       6800000           Tinggi
## 5    Eka       4300000           Sedang
## 6  Fajar       7200000           Tinggi
## 7   Gina       3100000           Sedang
## 8   Hadi       8500000           Tinggi
## 9  Intan       1200000           Rendah
## 10  Joko       4700000           Sedang
## 11  Kiki       6200000           Tinggi
## 12  Lina       2900000           Rendah
## 13  Maya       9100000           Tinggi
## 14 Nanda       3800000           Sedang
## 15   Oki       5600000           Sedang
## 16 Putri       7500000           Tinggi
## 17  Rian       4500000           Sedang
## 18 Sinta       2300000           Rendah
## 19  Tono       6700000           Tinggi
## 20  Vina       3400000           Sedang

Jumlah Pelanggan pada Setiap Kategori

table(data_tambahan$Kategori_Belanja)
## 
## Rendah Sedang Tinggi 
##      5      8      7

Pelanggan dengan Total Belanja Tertinggi

data_pelanggan[data_pelanggan$Total_Belanja == 9100000,]
##     ID Nama       Kota Umur Total_Belanja
## 13 113 Maya Yogyakarta   26       9100000

Pelanggan dengan Umur Paling Muda

min(data_pelanggan$Umur)
## [1] 19
data_pelanggan[data_pelanggan$Umur == 19,]
##    ID  Nama Kota Umur Total_Belanja
## 1 101  Andi Solo   19       2500000
## 9 109 Intan Solo   19       1200000

Pelanggan yang Tinggal di Solo, Berumur <= 25 Tahun, dan Total_Belanja > 5.000.000

data_pelanggan %>%
  filter(
    Kota == "Solo",
    Umur <= 25,
    Total_Belanja > 5000000
  )
##    ID Nama Kota Umur Total_Belanja
## 1 115  Oki Solo   21       5600000

Rata_Rata Total Belanja untuk Pelanggan yang Tinggal di Solo

data_pelanggan[data_pelanggan$Kota == "Solo",]
##     ID  Nama Kota Umur Total_Belanja
## 1  101  Andi Solo   19       2500000
## 3  103 Citra Solo   20       1750000
## 6  106 Fajar Solo   31       7200000
## 9  109 Intan Solo   19       1200000
## 12 112  Lina Solo   23       2900000
## 15 115   Oki Solo   21       5600000
## 18 118 Sinta Solo   20       2300000
data_pelanggan %>%
  filter(Kota == "Solo") %>%
  summarise(rata_rata = mean(Total_Belanja))
##   rata_rata
## 1   3350000

Rata-Rata Total Belanja di Setiap Kota

aggregate(Total_Belanja~Kota, data=data_pelanggan, mean)
##         Kota Total_Belanja
## 1     Klaten       4575000
## 2   Semarang       5320000
## 3       Solo       3350000
## 4 Yogyakarta       7225000

Rangking Pelanggan berdasarkan Total Belanja

data_pelanggan %>%
  arrange(desc(Total_Belanja))
##     ID  Nama       Kota Umur Total_Belanja
## 1  113  Maya Yogyakarta   26       9100000
## 2  108  Hadi Yogyakarta   24       8500000
## 3  116 Putri   Semarang   32       7500000
## 4  106 Fajar       Solo   31       7200000
## 5  104  Dina Yogyakarta   25       6800000
## 6  119  Tono     Klaten   34       6700000
## 7  111  Kiki   Semarang   28       6200000
## 8  115   Oki       Solo   21       5600000
## 9  102  Budi   Semarang   21       5200000
## 10 110  Joko     Klaten   35       4700000
## 11 117  Rian Yogyakarta   29       4500000
## 12 105   Eka   Semarang   22       4300000
## 13 114 Nanda     Klaten   30       3800000
## 14 120  Vina   Semarang   22       3400000
## 15 107  Gina     Klaten   27       3100000
## 16 112  Lina       Solo   23       2900000
## 17 101  Andi       Solo   19       2500000
## 18 118 Sinta       Solo   20       2300000
## 19 103 Citra       Solo   20       1750000
## 20 109 Intan       Solo   19       1200000

Menambahkan Format Rupiah ke Total Belanja

data_pelanggan$Total_Belanja_Rupiah <- paste0(
  "Rp",
  format(data_pelanggan$Total_Belanja,
         big.mark = ".",
         decimal.mark = ",",
         scientific = FALSE)
)

data_pelanggan
##     ID  Nama       Kota Umur Total_Belanja Total_Belanja_Rupiah
## 1  101  Andi       Solo   19       2500000          Rp2.500.000
## 2  102  Budi   Semarang   21       5200000          Rp5.200.000
## 3  103 Citra       Solo   20       1750000          Rp1.750.000
## 4  104  Dina Yogyakarta   25       6800000          Rp6.800.000
## 5  105   Eka   Semarang   22       4300000          Rp4.300.000
## 6  106 Fajar       Solo   31       7200000          Rp7.200.000
## 7  107  Gina     Klaten   27       3100000          Rp3.100.000
## 8  108  Hadi Yogyakarta   24       8500000          Rp8.500.000
## 9  109 Intan       Solo   19       1200000          Rp1.200.000
## 10 110  Joko     Klaten   35       4700000          Rp4.700.000
## 11 111  Kiki   Semarang   28       6200000          Rp6.200.000
## 12 112  Lina       Solo   23       2900000          Rp2.900.000
## 13 113  Maya Yogyakarta   26       9100000          Rp9.100.000
## 14 114 Nanda     Klaten   30       3800000          Rp3.800.000
## 15 115   Oki       Solo   21       5600000          Rp5.600.000
## 16 116 Putri   Semarang   32       7500000          Rp7.500.000
## 17 117  Rian Yogyakarta   29       4500000          Rp4.500.000
## 18 118 Sinta       Solo   20       2300000          Rp2.300.000
## 19 119  Tono     Klaten   34       6700000          Rp6.700.000
## 20 120  Vina   Semarang   22       3400000          Rp3.400.000

Diagram Batang Total Belanja di Setiap Kota

data_kota <- data_pelanggan %>%
  group_by(Kota) %>%
  summarise(Total_Belanja = sum(Total_Belanja))

data_kota
## # A tibble: 4 × 2
##   Kota       Total_Belanja
##   <chr>              <dbl>
## 1 Klaten          18300000
## 2 Semarang        26600000
## 3 Solo            23450000
## 4 Yogyakarta      28900000
ggplot(data_kota, aes(x = Kota, y = Total_Belanja)) +
  geom_col()