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

##Panggil Data

b <- read.csv("df_customer.csv")
head(b)
##   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

##1. Berapa jumlah total transaksi dalam data ini? nrow() berfungsi untuk menghitung banyaknya data (banyaknya baris).

nrow(b)
## [1] 300

##2. Ada berapa pelanggan unik dalam dataset? unique() untuk melihat data yang berbeda saja, data yang sudah ada tidak akan dimunculkan lagi. length() untuk menghitung berapa banyak datanya.

data_unik<-unique(b$ID_Pelanggan)
length(data_unik)
## [1] 94

##3. Siapa pelanggan yang paling sering berbelanja? table() untuk menghitung frekuensi kemunculan setiap data. sort() berfungsi untuk mengurutkan data dari yang terkecil ke terbesar, namun jika kita menambahkan decreasting, dataakan berurutan dari yang terbesar ke terkecil. fungsi head() adalah untuk menentukan berapa banyak data teratas yang ingin kita munculkan.

frek.muncul<-table(b$ID_Pelanggan)
sort(frek.muncul, decreasing = TRUE) |>head(3)
## 
## ID00007 ID00025 ID00089 
##       9       7       7

##4. Rata-rata penghasilan pelanggan berdasarkan jenis kelamin.

aggregate(Penghasilan ~ Jenis_Kelamin, data=b, mean)
##   Jenis_Kelamin Penghasilan
## 1     Laki-laki     8880902
## 2     Perempuan     8505199

##5. Rata-rata total belanja pelanggan berdasarkan jenis kelamin

aggregate(Total_Belanja ~ Jenis_Kelamin, data=b, mean)
##   Jenis_Kelamin Total_Belanja
## 1     Laki-laki       6034728
## 2     Perempuan       7114786

##6. Rata-rata penghasilan pelanggan berdasarkan tempat tinggal (Kota vs Desa).

aggregate(Penghasilan ~ Tempat_Tinggal, data=b, mean)
##   Tempat_Tinggal Penghasilan
## 1           Desa     6249122
## 2           Kota     9878685

##7. Rata-rata total belanja pelanggan berdasarkan tempat tinggal.

aggregate(Total_Belanja ~ Tempat_Tinggal, data=b, mean)
##   Tempat_Tinggal Total_Belanja
## 1           Desa       5022231
## 2           Kota       7520118

##8. Siapa 5 pelanggan dengan total belanja tertinggi?

b[order(-b$Total_Belanja), c("ID_Pelanggan", "Total_Belanja")] |> head(5)
##     ID_Pelanggan Total_Belanja
## 76       ID00034      11626302
## 175      ID00011      11527638
## 228      ID00057      11031197
## 287      ID00093      10984825
## 33       ID00007      10846012

##9. Distribusi jumlah transaksi berdasarkan jenis kelamin.

table(b$Jenis_Kelamin)
## 
## Laki-laki Perempuan 
##       121       179

##10. Buat kategori penghasilan: Rendah (< 5 juta) Menengah (5–10 juta) Tinggi (> 10 juta) Lalu hitung distribusinya.

b$kategori<-cut(b$Penghasilan, 
              breaks = c(-Inf, 5000000, 10000000, Inf), 
              labels = c("Rendah", "Menengah", "Tinggi"))
table(b$kategori)
## 
##   Rendah Menengah   Tinggi 
##       27      175       98