Setup awal

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
df <- read.csv("df_customer.csv")

head(df)
##   X ID_Pelanggan Jenis_Kelamin Tempat_Tinggal Penghasilan Total_Belanja
## 1 1      ID00031     Laki-laki           Desa     2227350       2563031
## 2 2      ID00079     Perempuan           Kota     9047608       8369550
## 3 3      ID00051     Perempuan           Kota     9735540       8053033
## 4 4      ID00014     Laki-laki           Kota    13510126       9799876
## 5 5      ID00067     Perempuan           Desa     7773498       6982081
## 6 6      ID00042     Laki-laki           Desa     6666740       4782002

Pelanggan yang paling sering membeli dengan total belanja > 5.000.000

frec1 <- df %>%
  filter(Total_Belanja > 5000000) %>%
  count(ID_Pelanggan, sort = TRUE)

head(frec1, n=3)
##   ID_Pelanggan n
## 1      ID00007 7
## 2      ID00025 7
## 3      ID00026 6

Jumlah perempuan di kota yang berbelanja lebih dari 5 kali

frec2 <- df %>%
  group_by(ID_Pelanggan, Jenis_Kelamin, Tempat_Tinggal) %>%
  summarise(frec = n(), .groups = 'drop')
  
ffrec2 <- frec2 %>%
  filter(frec > 5 &
           Tempat_Tinggal == 'Kota' &
           Jenis_Kelamin == 'Perempuan')

nrow(ffrec2)
## [1] 0
head(ffrec2)
## # A tibble: 0 × 4
## # ℹ 4 variables: ID_Pelanggan <chr>, Jenis_Kelamin <chr>, Tempat_Tinggal <chr>,
## #   frec <int>

Pelanggan yang paling sering membeli dengan penghasilan > 5.000.000

frec3 <- df %>%
  group_by(ID_Pelanggan, Penghasilan) %>%
  filter(Penghasilan > 5000000) %>%
  summarise(frec = n(), .groups = 'drop')

head(arrange(frec3, desc(frec)), n=1)
## # A tibble: 1 × 3
##   ID_Pelanggan Penghasilan  frec
##   <chr>              <int> <int>
## 1 ID00001          5679239     1

Jenis kelamin pelanggan di desa dengan total belanja > 5.000.000

summ4 <- df %>%
  group_by(Jenis_Kelamin, Tempat_Tinggal, Total_Belanja) %>%
  filter(Total_Belanja > 5000000) %>%
  summarise(.groups = 'drop')

head(arrange(summ4), n = 1)
## # A tibble: 1 × 3
##   Jenis_Kelamin Tempat_Tinggal Total_Belanja
##   <chr>         <chr>                  <int>
## 1 Laki-laki     Desa                 5002921
head(arrange(summ4, desc(Jenis_Kelamin)), n = 1)
## # A tibble: 1 × 3
##   Jenis_Kelamin Tempat_Tinggal Total_Belanja
##   <chr>         <chr>                  <int>
## 1 Perempuan     Desa                 5043885

Penghasilan pelanggan di desa dengan total belanja > 5.000.000

summ5 <- df %>%
  group_by(Penghasilan, Tempat_Tinggal, Total_Belanja) %>%
  filter(Total_Belanja > 5000000) %>%
  summarise(.groups = 'drop')

head(summ5)
## # A tibble: 6 × 3
##   Penghasilan Tempat_Tinggal Total_Belanja
##         <int> <chr>                  <int>
## 1     2975563 Kota                 5952935
## 2     3157783 Desa                 5695306
## 3     3373098 Desa                 5157567
## 4     3495751 Kota                 6122424
## 5     3726214 Desa                 5043885
## 6     4473417 Kota                 5476852
min(summ5$Penghasilan)
## [1] 2975563
max(summ5$Penghasilan)
## [1] 16145151