BELAJAR DATA SCIENCE MENYENANGKAN
## 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
## 7 7 ID00050 Perempuan Desa 5658721 4286283
## 8 8 ID00043 Laki-laki Desa 7637656 4779797
## 9 9 ID00014 Perempuan Desa 6776730 6315967
## 10 10 ID00025 Laki-laki Kota 10412102 5106141
## [1] "ID00031" "ID00079" "ID00051" "ID00014" "ID00067" "ID00042" "ID00050"
## [8] "ID00043" "ID00025" "ID00090" "ID00091" "ID00069" "ID00057" "ID00092"
## [15] "ID00009" "ID00093" "ID00099" "ID00072" "ID00026" "ID00007" "ID00083"
## [22] "ID00036" "ID00078" "ID00081" "ID00076" "ID00015" "ID00032" "ID00041"
## [29] "ID00074" "ID00023" "ID00027" "ID00060" "ID00053" "ID00096" "ID00038"
## [36] "ID00089" "ID00034" "ID00063" "ID00013" "ID00082" "ID00097" "ID00021"
## [43] "ID00047" "ID00095" "ID00016" "ID00094" "ID00006" "ID00086" "ID00039"
## [50] "ID00004" "ID00052" "ID00022" "ID00087" "ID00035" "ID00040" "ID00030"
## [57] "ID00012" "ID00064" "ID00071" "ID00085" "ID00037" "ID00008" "ID00098"
## [64] "ID00084" "ID00046" "ID00017" "ID00062" "ID00054" "ID00024" "ID00005"
## [71] "ID00070" "ID00055" "ID00075" "ID00048" "ID00077" "ID00056" "ID00068"
## [78] "ID00001" "ID00088" "ID00020" "ID00049" "ID00059" "ID00011" "ID00066"
## [85] "ID00044" "ID00045" "ID00033" "ID00010" "ID00058" "ID00061" "ID00029"
## [92] "ID00073" "ID00018" "ID00002"
## [1] 94
## [1] 94
## [1] 94
# Mengurutkan data frekuensi alur logika dasar
sort(table(df_customer$ID_Pelanggan), decreasing = TRUE)[1:3]##
## ID00007 ID00025 ID00089
## 9 7 7
# Mengurutkan data frekuensi alur logika dplyr
df_customer %>%
count(ID_Pelanggan, sort = TRUE) %>%
slice_head(n = 3)## ID_Pelanggan n
## 1 ID00007 9
## 2 ID00025 7
## 3 ID00089 7
# Mengurutkan data frekuensi alur logika data_table
as.data.table(df_customer)[, .N, by = ID_Pelanggan][order(-N)][1:3]## ID_Pelanggan N
## <char> <int>
## 1: ID00007 9
## 2: ID00025 7
## 3: ID00093 7
# Mencari nilai rata - rata penghasilan dengan logika dasar
aggregate(Penghasilan ~ Jenis_Kelamin, data = df_customer, mean)## Jenis_Kelamin Penghasilan
## 1 Laki-laki 8880902
## 2 Perempuan 8505199
# Mencari nilai rata - rata penghasilan dengan logika dplyr
result1_1 <- df_customer %>%
group_by(Jenis_Kelamin) %>%
summarise(Rata_Rata_Penghasilan = mean(Penghasilan, na.rm = TRUE))
head(result1_1)## # A tibble: 2 × 2
## Jenis_Kelamin Rata_Rata_Penghasilan
## <chr> <dbl>
## 1 Laki-laki 8880902.
## 2 Perempuan 8505199.
# Mencari nilai rata - rata penghasilan dengan logika data_table
result1_2 <- as.data.table(df_customer)[, .(Rata_Rata_Penghasilan = mean(Penghasilan, na.rm = TRUE)), by = Jenis_Kelamin]
head(result1_2)## Jenis_Kelamin Rata_Rata_Penghasilan
## <char> <num>
## 1: Laki-laki 8880902
## 2: Perempuan 8505199
# Rata-rata total belanja dengan logika dasar
aggregate(Total_Belanja ~ Jenis_Kelamin, data = df_customer, mean)## Jenis_Kelamin Total_Belanja
## 1 Laki-laki 6034728
## 2 Perempuan 7114786
# Rata-rata total belanja dengan logika dplyr
result2_1 <- df_customer %>%
group_by(Jenis_Kelamin) %>%
summarise(Total_Belanja = mean(Total_Belanja, na.rm = TRUE))
result2_1## # A tibble: 2 × 2
## Jenis_Kelamin Total_Belanja
## <chr> <dbl>
## 1 Laki-laki 6034728.
## 2 Perempuan 7114786.
# Rata-rata total belanja dengan logika data_table
result2_2 <- as.data.table(df_customer)[, .(Total_Belanja = mean(Total_Belanja, na.rm = TRUE)), by = Jenis_Kelamin]
result2_2## Jenis_Kelamin Total_Belanja
## <char> <num>
## 1: Laki-laki 6034728
## 2: Perempuan 7114786
# Rata-rata penghasilan terhadap tempat tinggal dengan logika dasar 1
aggregate(Penghasilan ~ Tempat_Tinggal, data = df_customer, mean)## Tempat_Tinggal Penghasilan
## 1 Desa 6249122
## 2 Kota 9878685
# Rata-rata penghasilan terhadap tempat tinggal dengan logika dasar 2
tapply(df_customer$Penghasilan, df_customer$Tempat_Tinggal, mean, na.rm = TRUE)## Desa Kota
## 6249122 9878685
# Rata-rata penghasilan terhadap tempat tinggal dengan logika dplyr
df_customer %>%
group_by(Tempat_Tinggal) %>%
summarise(Rata_Rata_Penghasilan = mean(Penghasilan, na.rm = TRUE))## # A tibble: 2 × 2
## Tempat_Tinggal Rata_Rata_Penghasilan
## <chr> <dbl>
## 1 Desa 6249122.
## 2 Kota 9878685.
# Rata-rata penghasilan terhadap tempat tinggal dengan logika data_table
as.data.table(df_customer)[, .(Rata_Rata_Penghasilan = mean(Penghasilan, na.rm = TRUE)), by = Tempat_Tinggal]## Tempat_Tinggal Rata_Rata_Penghasilan
## <char> <num>
## 1: Desa 6249122
## 2: Kota 9878685
# Rata-rata total belanja berdasar lokasi dengan logika dasar 1
aggregate(Total_Belanja ~ Tempat_Tinggal, data = df_customer, mean)## Tempat_Tinggal Total_Belanja
## 1 Desa 5022231
## 2 Kota 7520118
# Rata-rata total belanja berdasar lokasi dengan logika dasar 2
tapply(df_customer$Total_Belanja, df_customer$Tempat_Tinggal, mean)## Desa Kota
## 5022231 7520118
# Rata-rata total belanja berdasar lokasi dengan logika dasar 3
by(df_customer$Total_Belanja, df_customer$Tempat_Tinggal, mean)## df_customer$Tempat_Tinggal: Desa
## [1] 5022231
## ------------------------------------------------------------
## df_customer$Tempat_Tinggal: Kota
## [1] 7520118
# Rata-rata total belanja berdasar lokasi dengan logika dplyr
df_customer %>%
group_by(Tempat_Tinggal) %>%
summarise(Rata_Rata_Belanja = mean(Total_Belanja, na.rm = TRUE))## # A tibble: 2 × 2
## Tempat_Tinggal Rata_Rata_Belanja
## <chr> <dbl>
## 1 Desa 5022231.
## 2 Kota 7520118.
# Rata-rata total belanja berdasar lokasi dengan logika data_table
as.data.table(df_customer)[, .(Rata_Rata_Belanja = mean(Total_Belanja, na.rm = TRUE)), by = Tempat_Tinggal]## Tempat_Tinggal Rata_Rata_Belanja
## <char> <num>
## 1: Desa 5022231
## 2: Kota 7520118
# Mengurutkan pelanggan top 5 dengan transaksi terbesar dengan logika dasar 1
head(df_customer[order(df_customer$Total_Belanja, decreasing = TRUE), c("ID_Pelanggan", "Total_Belanja")], 5)## ID_Pelanggan Total_Belanja
## 76 ID00034 11626302
## 175 ID00011 11527638
## 228 ID00057 11031197
## 287 ID00093 10984825
## 33 ID00007 10846012
# Mengurutkan pelanggan top 5 dengan transaksi terbesar dengan logika dasar 2
df_customer[order(df_customer$Total_Belanja, decreasing = TRUE)[1:5], c("ID_Pelanggan", "Total_Belanja")]## ID_Pelanggan Total_Belanja
## 76 ID00034 11626302
## 175 ID00011 11527638
## 228 ID00057 11031197
## 287 ID00093 10984825
## 33 ID00007 10846012
# Mengurutkan pelanggan Top 5 dengan transaksi terbesar dengan logika dplyr
df_customer %>%
arrange(desc(Total_Belanja)) %>%
select(ID_Pelanggan, Total_Belanja) %>%
head(5)## ID_Pelanggan Total_Belanja
## 1 ID00034 11626302
## 2 ID00011 11527638
## 3 ID00057 11031197
## 4 ID00093 10984825
## 5 ID00007 10846012
# Mengurutkan pelanggan top 5 dengan transaksi terbesar dengan logika data_table
as.data.table(df_customer)[order(-Total_Belanja), .(ID_Pelanggan, Total_Belanja)][1:5]## ID_Pelanggan Total_Belanja
## <char> <int>
## 1: ID00034 11626302
## 2: ID00011 11527638
## 3: ID00057 11031197
## 4: ID00093 10984825
## 5: ID00007 10846012
# Klasifikasi data menggunakan logika dasar
df_customer$Kategori_Penghasilan <- cut(df_customer$Penghasilan, breaks = c(-Inf, 5000000, 10000000, Inf), labels = c("Rendah", "Menengah", "Tinggi"))
table(df_customer$Kategori_Penghasilan)##
## Rendah Menengah Tinggi
## 27 175 98
# Klasifikasi data menggunakan dplyr
df_customer <- df_customer %>%
mutate(Kategori_Penghasilan = case_when(
Penghasilan <= 5000000 ~ "Rendah",
Penghasilan <= 10000000 ~ "Menengah",
TRUE ~ "Tinggi"
))
df_customer %>%
count(Kategori_Penghasilan)## Kategori_Penghasilan n
## 1 Menengah 175
## 2 Rendah 27
## 3 Tinggi 98
# Klasifikasi data menggunakan data_table
setDT(df_customer)
df_customer[, Kategori_Penghasilan := fcase(
Penghasilan <= 5000000, "Rendah",
Penghasilan <= 10000000, "Menengah",
default = "Tinggi"
)]
df_customer[, .N, by = Kategori_Penghasilan]## Kategori_Penghasilan N
## <char> <int>
## 1: Rendah 27
## 2: Menengah 175
## 3: Tinggi 98
# Memfilter transaksi yang nilai belanjanya di atas 5.000.000 ke dalam objek baru
data_belanja_5jt <- df_customer[df_customer$Total_Belanja > 5000000, ]
# Menghitung frekuensi transaksi per ID Pelanggan dari data yang sudah difilter
frek_pelanggan_1 <- table(data_belanja_5jt$ID_Pelanggan)
# Mengurutkan frekuensi dari yang terbanyak keterkecil dan mengambil posisi teratas (peringkat 1)
sort(frek_pelanggan_1, decreasing = TRUE)[1-5]##
## ID00007 ID00025 ID00026 ID00053 ID00079 ID00084 ID00090 ID00093 ID00006 ID00009
## 7 7 6 5 5 5 5 5 4 4
## ID00016 ID00023 ID00024 ID00031 ID00032 ID00036 ID00057 ID00063 ID00067 ID00074
## 4 4 4 4 4 4 4 4 4 4
## ID00087 ID00091 ID00002 ID00013 ID00014 ID00030 ID00035 ID00037 ID00039 ID00040
## 4 4 3 3 3 3 3 3 3 3
## ID00042 ID00045 ID00046 ID00052 ID00055 ID00060 ID00069 ID00071 ID00072 ID00082
## 3 3 3 3 3 3 3 3 3 3
## ID00085 ID00094 ID00004 ID00008 ID00010 ID00017 ID00021 ID00022 ID00033 ID00034
## 3 3 2 2 2 2 2 2 2 2
## ID00038 ID00041 ID00048 ID00049 ID00050 ID00051 ID00054 ID00058 ID00066 ID00075
## 2 2 2 2 2 2 2 2 2 2
## ID00076 ID00083 ID00086 ID00092 ID00096 ID00097 ID00001 ID00005 ID00011 ID00012
## 2 2 2 2 2 2 1 1 1 1
## ID00015 ID00018 ID00027 ID00029 ID00043 ID00044 ID00047 ID00056 ID00059 ID00061
## 1 1 1 1 1 1 1 1 1 1
## ID00064 ID00070 ID00073 ID00077 ID00078 ID00088 ID00095 ID00098 ID00099
## 1 1 1 1 1 1 1 1 1
# Memfilter data untuk perempuan/wanita yang berdomisili di Kota
data_cewek_kota <- df_customer[df_customer$Jenis_Kelamin %in% c("Perempuan", "Wanita") & df_customer$Tempat_Tinggal == "Kota", ]
# Menghitung jumlah kali transaksi yang dilakukan oleh masing-masing ID Pelanggan
frek_cewek_kota <- table(data_cewek_kota$ID_Pelanggan)
# Menyaring hanya pelanggan yang frekuensi transaksinya lebih dari 5 kali
pelanggan_lebih_5x <- frek_cewek_kota[frek_cewek_kota > 5]
# Menghitung total banyaknya individu/pelanggan unik yang memenuhi kriteria tersebut
length(pelanggan_lebih_5x)## [1] 0
# Memfilter baris data yang pelanggannya memiliki penghasilan di atas 5.000.000
data_gaji_5jt <- df_customer[df_customer$Penghasilan > 5000000, ]
# Menghitung berapa kali setiap pelanggan melakukan pembelian pada data hasil filter
frek_pelanggan_gaji <- table(data_gaji_5jt$ID_Pelanggan)
# Mengurutkan data transaksi terbanyak dan menampilkan pelanggan urutan pertama
sort(frek_pelanggan_gaji, decreasing = TRUE)[1:5]##
## ID00007 ID00025 ID00093 ID00026 ID00089
## 9 7 7 6 6
# Memfilter data dengan dua syarat sekaligus (tinggal di Desa DAN belanja > 5.000.000)
data_desa_belanja_5jt <- df_customer[df_customer$Tempat_Tinggal == "Desa" & df_customer$Total_Belanja > 5000000, ]
# Melihat sebaran frekuensi jumlah transaksinya menurut jenis kelamin
table(data_desa_belanja_5jt$Jenis_Kelamin)##
## Laki-laki Perempuan
## 10 37
# Menyaring data transaksi pelanggan di Desa yang total belanjanya lebih dari 5.000.000
data_desa_belanja_5jt <- df_customer[df_customer$Tempat_Tinggal == "Desa" & df_customer$Total_Belanja > 5000000, ]
# Menampilkan ID Pelanggan beserta nominal penghasilannya tanpa duplikasi baris
unique(data_desa_belanja_5jt[, c("ID_Pelanggan", "Penghasilan")],)## ID_Pelanggan Penghasilan
## <char> <int>
## 1: ID00067 7773498
## 2: ID00014 6776730
## 3: ID00027 8108645
## 4: ID00089 9032981
## 5: ID00034 5616450
## 6: ID00013 4481204
## 7: ID00091 6128487
## 8: ID00038 5947963
## 9: ID00041 9231091
## 10: ID00047 5940612
## 11: ID00095 8032910
## 12: ID00031 7822419
## 13: ID00022 9331982
## 14: ID00096 7082568
## 15: ID00074 9657061
## 16: ID00094 7651846
## 17: ID00016 5575699
## 18: ID00055 8635642
## 19: ID00075 5809025
## 20: ID00090 6005712
## 21: ID00098 4849165
## 22: ID00048 4626369
## 23: ID00088 5455465
## 24: ID00067 6467267
## 25: ID00049 3157783
## 26: ID00055 6093467
## 27: ID00008 6193172
## 28: ID00072 9024791
## 29: ID00058 9310352
## 30: ID00026 8141032
## 31: ID00052 6499451
## 32: ID00026 10832415
## 33: ID00090 11664452
## 34: ID00073 6455085
## 35: ID00014 6571179
## 36: ID00006 9498495
## 37: ID00091 5671820
## 38: ID00094 3726214
## 39: ID00031 6533837
## 40: ID00093 6856664
## 41: ID00057 7212261
## 42: ID00089 6928182
## 43: ID00066 3373098
## 44: ID00008 6940985
## 45: ID00063 6915574
## 46: ID00097 7028460
## 47: ID00013 9810087
## ID_Pelanggan Penghasilan
## <char> <int>
## X ID_Pelanggan Jenis_Kelamin Tempat_Tinggal Penghasilan Total_Belanja
## <int> <char> <fctr> <char> <int> <int>
## 1: 5 ID00067 Perempuan Desa 7773498 6982081
## 2: 9 ID00014 Perempuan Desa 6776730 6315967
## 3: 43 ID00027 Perempuan Desa 8108645 6901502
## 4: 46 ID00089 Laki-laki Desa 9032981 5776859
## 5: 47 ID00034 Perempuan Desa 5616450 7064321
## Kategori_Penghasilan
## <char>
## 1: Menengah
## 2: Menengah
## 3: Menengah
## 4: Menengah
## 5: Menengah