Data Science Programming

Ujian Tengah Semester

Mohammad Riyadh

1.Operasi dan Tipe Data Dasar

Buat program sederhana dalam R dan Python yang melakukan hal berikut:

  1. Menerima dua bilangan dari pengguna

  2. Menghitung dan menampilkan hasil:

  • Penjumlahan
  • Perkalian
  • Pembagian
  • Bilangan pertama pangkat bilangan kedua
  1. Menampilkan tipe data masing-masing hasil operasi
# tes
a <- 6
b <- 3

# Operasi matematika
penjumlahan <- a + b
perkalian <- a * b
pembagian <- a / b
pangkat <- a ^ b

# Menampilkan hasil dan tipe datanya secara eksplisit
print(paste("Penjumlahan:", penjumlahan, "| Tipe:", typeof(penjumlahan)))
## [1] "Penjumlahan: 9 | Tipe: double"
print(paste("Perkalian:", perkalian, "| Tipe:", typeof(perkalian)))
## [1] "Perkalian: 18 | Tipe: double"
print(paste("Pembagian:", pembagian, "| Tipe:", typeof(pembagian)))
## [1] "Pembagian: 2 | Tipe: double"
print(paste("Pangkat:", pangkat, "| Tipe:", typeof(pangkat)))
## [1] "Pangkat: 216 | Tipe: double"

2. Struktur Kendali (Control Flow)

  1. Menerima input nilai ujian dari pengguna (0–100)

  2. Menampilkan keterangan berdasarkan ketentuan berikut:

  • Nilai ≥ 85: “Sangat Baik”
  • Nilai 70–84: “Baik”
  • Nilai 60–69: “Cukup”
  • Nilai < 60: “Perlu Perbaikan”
# Nilai tetap untuk keperluan knitting
nilai <- 72

if (nilai >= 85) {
  hasil <- "Sangat Baik"
} else if (nilai >= 70) {
  hasil <- "Baik"
} else if (nilai >= 60) {
  hasil <- "Cukup"
} else {
  hasil <- "Perlu Perbaikan"
}

cat("Nilai:", nilai, "| Keterangan:", hasil)
## Nilai: 72 | Keterangan: Baik

3.Fungsi dan Perulangan (kelipatan genap(n))

  1. Menerima input integer n

  2. Menggunakan loop untuk mencetak semua bilangan genap kelipatan 4 dari 1 hingga n

  3. Contoh output jika n = 20: 4, 8, 12, 16, 20

kelipatan_genap <- function(n) {
  hasil <- c()
  for (i in 1:n) {
    if (i %% 2 == 0 && i %% 4 == 0) {
      hasil <- c(hasil, i)
    }
  }
  return(hasil)
}

n <- 20
cat("Bilangan kelipatan genap dari 4 sampai", n, "adalah:", kelipatan_genap(n), "\n")
## Bilangan kelipatan genap dari 4 sampai 20 adalah: 4 8 12 16 20

4.Simulasi dan Analisis Penjualan E-Commerce 3 Bulan Terakhir

Sebuah perusahaan e-commerce ingin menganalisis performa penjualannya berdasarkan data transaksi selama 3 bulan terakhir. Namun, data yang tersedia berasal dari berbagai sumber dan memiliki kualitas yang beragam. Anda diminta untuk melakukan Data Wrangling sebelum dianalisis lebih lanjut.

Pendahuluan

Laporan ini bertujuan untuk menganalisis data penjualan dari bulan Januari, Februari, dan Maret. Proses yang dilakukan meliputi:

  1. Data Collection (Penggabungan data)

  2. Pembersihan data (Data Cleaning)

  3. Transformasi data

  4. Visualisasi data

Dengan alur kerja ini, kita dapat memperoleh insight seperti kategori produk terlaris, kota dengan penjualan tertinggi, dan tren penjualan antar bulan.

1. Data collection

## 
## 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
## Rows: 50 Columns: 9
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (7): Tanggal, Produk, Kategori, Harga, Jumlah, Pembeli, Kota
## dbl (1): OrderID
## lgl (1): Total
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## Rows: 50 Columns: 9
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (7): Tanggal, Produk, Kategori, Harga, Jumlah, Pembeli, Kota
## dbl (1): OrderID
## lgl (1): Total
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## Rows: 50 Columns: 9
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (7): Tanggal, Produk, Kategori, Harga, Jumlah, Pembeli, Kota
## dbl (1): OrderID
## lgl (1): Total
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## Data Januari:
## # A tibble: 6 × 9
##   OrderID Tanggal    Produk       Kategori  Harga     Jumlah Total Pembeli Kota 
##     <dbl> <chr>      <chr>        <chr>     <chr>     <chr>  <lgl> <chr>   <chr>
## 1    1001 01-01-2024 Laptop A     <NA>      15000000  empat  NA    Budi@   Band…
## 2    1002 02-01-2024 Tas Branded  Fashion   15000000  2      NA    Budi@   Sura…
## 3    1003 03-01-2024 Tas Branded  Aksesoris 15000000  3      NA    _anony… Band…
## 4    1004 04-01-2024 Kemeja       <NA>      15000000  dua    NA    Andi123 Band…
## 5    1005 05-01-2024 -            Fashion   Rp750.000 3      NA    _anony… Jaka…
## 6    1006 06-01-2024 Smartphone X Fashion   15000000  empat  NA    Sinta99 Band…
## Data Februari:
## # A tibble: 6 × 9
##   OrderID Tanggal    Produk       Kategori  Harga     Jumlah Total Pembeli Kota 
##     <dbl> <chr>      <chr>        <chr>     <chr>     <chr>  <lgl> <chr>   <chr>
## 1    1101 01-02-2024 Tas Branded  Aksesoris 1.200.000 dua    NA    Budi@   Band…
## 2    1102 02-02-2024 Smartphone X Fashion   Rp750.000 2      NA    _anony… -    
## 3    1103 03-02-2024 Kemeja       Fashion   15000000  1      NA    Budi@   Sura…
## 4    1104 04-02-2024 Kemeja       Fashion   15000000  empat  NA    _anony… Band…
## 5    1105 05-02-2024 Smartphone X <NA>      15000000  empat  NA    _anony… Sura…
## 6    1106 06-02-2024 -            Aksesoris Rp750.000 3      NA    _anony… Band…
## Data Maret:
## # A tibble: 6 × 9
##   OrderID Tanggal    Produk        Kategori   Harga   Jumlah Total Pembeli Kota 
##     <dbl> <chr>      <chr>         <chr>      <chr>   <chr>  <lgl> <chr>   <chr>
## 1    1201 01-03-2024 Sepatu 'Nike' Fashion    1.200.… empat  NA    Andi123 Sura…
## 2    1202 02-03-2024 -             Elektronik 150000… 3      NA    _anony… Jaka…
## 3    1203 03-03-2024 -             Fashion    1.200.… dua    NA    Sinta99 Sura…
## 4    1204 04-03-2024 -             <NA>       Rp750.… 3      NA    Budi@   Sura…
## 5    1205 05-03-2024 Tas Branded   <NA>       Rp750.… dua    NA    Andi123 Jaka…
## 6    1206 06-03-2024 Kemeja        Aksesoris  150000… 2      NA    Andi123 Sura…
## # A tibble: 150 × 9
##     OrderID Tanggal    Produk        Kategori   Harga Jumlah Total Pembeli Kota 
##       <dbl> <chr>      <chr>         <chr>      <chr> <chr>  <lgl> <chr>   <chr>
##   1    1001 01-01-2024 Laptop A      <NA>       1500… empat  NA    Budi@   Band…
##   2    1002 02-01-2024 Tas Branded   Fashion    1500… 2      NA    Budi@   Sura…
##   3    1003 03-01-2024 Tas Branded   Aksesoris  1500… 3      NA    _anony… Band…
##   4    1004 04-01-2024 Kemeja        <NA>       1500… dua    NA    Andi123 Band…
##   5    1005 05-01-2024 -             Fashion    Rp75… 3      NA    _anony… Jaka…
##   6    1006 06-01-2024 Smartphone X  Fashion    1500… empat  NA    Sinta99 Band…
##   7    1007 07-01-2024 Sepatu 'Nike' Elektronik 1.20… 3      NA    _anony… Band…
##   8    1008 08-01-2024 -             Elektronik 2500… dua    NA    _anony… Jaka…
##   9    1009 09-01-2024 Smartphone X  Elektronik 1500… empat  NA    _anony… -    
##  10    1010 10-01-2024 Sepatu 'Nike' Aksesoris  Rp75… 2      NA    Sinta99 Sura…
##  11    1011 11-01-2024 -             Fashion    Rp75… dua    NA    Sinta99 Jaka…
##  12    1012 12-01-2024 Tas Branded   Aksesoris  2500… empat  NA    Andi123 Sura…
##  13    1013 13-01-2024 Laptop A      Aksesoris  Rp75… 2      NA    Sinta99 Sura…
##  14    1014 14-01-2024 Tas Branded   Elektronik Rp75… dua    NA    Sinta99 Sura…
##  15    1015 15-01-2024 -             Elektronik 1.20… empat  NA    Sinta99 -    
##  16    1016 16-01-2024 Kemeja        Aksesoris  1500… 2      NA    _anony… Sura…
##  17    1017 17-01-2024 Sepatu 'Nike' Aksesoris  2500… empat  NA    Andi123 Jaka…
##  18    1018 18-01-2024 Smartphone X  Aksesoris  Rp75… dua    NA    Sinta99 -    
##  19    1019 19-01-2024 Kemeja        <NA>       Rp75… dua    NA    Budi@   Sura…
##  20    1020 20-01-2024 Laptop A      Aksesoris  1.20… 1      NA    _anony… Sura…
##  21    1021 21-01-2024 Laptop A      Elektronik 1500… 1      NA    _anony… Jaka…
##  22    1022 22-01-2024 Sepatu 'Nike' Aksesoris  Rp75… 2      NA    Sinta99 Sura…
##  23    1023 23-01-2024 Smartphone X  <NA>       Rp75… 3      NA    Andi123 -    
##  24    1024 24-01-2024 Tas Branded   <NA>       1500… 2      NA    Andi123 Sura…
##  25    1025 25-01-2024 Laptop A      Aksesoris  1500… 3      NA    Andi123 Jaka…
##  26    1026 26-01-2024 -             Aksesoris  2500… 1      NA    Andi123 Band…
##  27    1027 27-01-2024 Laptop A      <NA>       2500… 3      NA    _anony… Band…
##  28    1028 28-01-2024 Kemeja        <NA>       2500… empat  NA    Budi@   Jaka…
##  29    1029 29-01-2024 Smartphone X  Fashion    1.20… 3      NA    Sinta99 -    
##  30    1030 30-01-2024 Kemeja        <NA>       1500… empat  NA    _anony… Band…
##  31    1031 31-01-2024 Sepatu 'Nike' <NA>       Rp75… 1      NA    Budi@   Jaka…
##  32    1032 01-02-2024 -             Fashion    2500… 1      NA    _anony… Jaka…
##  33    1033 02-02-2024 Smartphone X  Elektronik Rp75… empat  NA    Budi@   Band…
##  34    1034 03-02-2024 Smartphone X  <NA>       1.20… 1      NA    Sinta99 -    
##  35    1035 04-02-2024 Tas Branded   Aksesoris  1.20… 2      NA    Budi@   -    
##  36    1036 05-02-2024 Kemeja        Fashion    Rp75… empat  NA    Budi@   -    
##  37    1037 06-02-2024 Laptop A      Aksesoris  1.20… empat  NA    Budi@   Band…
##  38    1038 07-02-2024 Kemeja        Aksesoris  1500… 3      NA    Sinta99 Jaka…
##  39    1039 08-02-2024 Smartphone X  Elektronik Rp75… 3      NA    _anony… -    
##  40    1040 09-02-2024 -             Fashion    1500… empat  NA    _anony… Sura…
##  41    1041 10-02-2024 Laptop A      <NA>       2500… empat  NA    Andi123 Jaka…
##  42    1042 11-02-2024 Smartphone X  Fashion    Rp75… dua    NA    Andi123 -    
##  43    1043 12-02-2024 Kemeja        <NA>       1.20… 1      NA    Andi123 -    
##  44    1044 13-02-2024 Sepatu 'Nike' <NA>       1.20… 1      NA    Sinta99 Jaka…
##  45    1045 14-02-2024 Tas Branded   <NA>       2500… 1      NA    Andi123 -    
##  46    1046 15-02-2024 Laptop A      <NA>       1.20… 3      NA    Andi123 Band…
##  47    1047 16-02-2024 Kemeja        Fashion    2500… dua    NA    _anony… -    
##  48    1048 17-02-2024 Sepatu 'Nike' Fashion    1500… 3      NA    Andi123 Jaka…
##  49    1049 18-02-2024 -             <NA>       2500… empat  NA    Sinta99 -    
##  50    1050 19-02-2024 Smartphone X  Elektronik 1.20… dua    NA    _anony… Jaka…
##  51    1101 01-02-2024 Tas Branded   Aksesoris  1.20… dua    NA    Budi@   Band…
##  52    1102 02-02-2024 Smartphone X  Fashion    Rp75… 2      NA    _anony… -    
##  53    1103 03-02-2024 Kemeja        Fashion    1500… 1      NA    Budi@   Sura…
##  54    1104 04-02-2024 Kemeja        Fashion    1500… empat  NA    _anony… Band…
##  55    1105 05-02-2024 Smartphone X  <NA>       1500… empat  NA    _anony… Sura…
##  56    1106 06-02-2024 -             Aksesoris  Rp75… 3      NA    _anony… Band…
##  57    1107 07-02-2024 Kemeja        Aksesoris  1.20… empat  NA    Andi123 Sura…
##  58    1108 08-02-2024 -             <NA>       Rp75… empat  NA    Budi@   Jaka…
##  59    1109 09-02-2024 Tas Branded   Elektronik 2500… 3      NA    Budi@   Band…
##  60    1110 10-02-2024 Sepatu 'Nike' Aksesoris  1500… 3      NA    _anony… Band…
##  61    1111 11-02-2024 Tas Branded   Elektronik 1500… 3      NA    _anony… Sura…
##  62    1112 12-02-2024 Kemeja        <NA>       2500… 2      NA    _anony… Band…
##  63    1113 13-02-2024 Tas Branded   Fashion    1500… 3      NA    _anony… -    
##  64    1114 14-02-2024 Sepatu 'Nike' Elektronik 1.20… 3      NA    Andi123 Band…
##  65    1115 15-02-2024 Tas Branded   Aksesoris  2500… dua    NA    Sinta99 Sura…
##  66    1116 16-02-2024 Smartphone X  Elektronik 1500… dua    NA    Andi123 Jaka…
##  67    1117 17-02-2024 -             Elektronik 2500… 2      NA    Sinta99 Band…
##  68    1118 18-02-2024 Smartphone X  Aksesoris  1.20… empat  NA    Sinta99 -    
##  69    1119 19-02-2024 -             Fashion    Rp75… empat  NA    Andi123 Jaka…
##  70    1120 20-02-2024 Kemeja        Aksesoris  Rp75… empat  NA    Andi123 Jaka…
##  71    1121 21-02-2024 -             <NA>       2500… 3      NA    _anony… -    
##  72    1122 22-02-2024 -             <NA>       1500… 3      NA    Sinta99 -    
##  73    1123 23-02-2024 Smartphone X  Elektronik Rp75… 3      NA    _anony… Jaka…
##  74    1124 24-02-2024 Laptop A      Elektronik 2500… 1      NA    _anony… Jaka…
##  75    1125 25-02-2024 Kemeja        Aksesoris  Rp75… 3      NA    Budi@   Sura…
##  76    1126 26-02-2024 Sepatu 'Nike' Aksesoris  Rp75… dua    NA    Sinta99 Sura…
##  77    1127 27-02-2024 Smartphone X  <NA>       1500… 3      NA    Andi123 Band…
##  78    1128 28-02-2024 Kemeja        Fashion    Rp75… 3      NA    Andi123 Sura…
##  79    1129 29-02-2024 Kemeja        Fashion    Rp75… 1      NA    Andi123 Sura…
##  80    1130 01-03-2024 Tas Branded   Fashion    1.20… 3      NA    _anony… Band…
##  81    1131 02-03-2024 Smartphone X  <NA>       Rp75… 2      NA    _anony… Band…
##  82    1132 03-03-2024 Kemeja        Aksesoris  Rp75… 1      NA    _anony… Band…
##  83    1133 04-03-2024 Smartphone X  <NA>       Rp75… 3      NA    Sinta99 Sura…
##  84    1134 05-03-2024 Kemeja        Aksesoris  1500… 3      NA    Sinta99 Jaka…
##  85    1135 06-03-2024 Sepatu 'Nike' Aksesoris  2500… empat  NA    Sinta99 Band…
##  86    1136 07-03-2024 Laptop A      <NA>       2500… 3      NA    Budi@   Band…
##  87    1137 08-03-2024 Kemeja        Aksesoris  2500… 3      NA    Andi123 -    
##  88    1138 09-03-2024 Sepatu 'Nike' <NA>       Rp75… 1      NA    Sinta99 -    
##  89    1139 10-03-2024 Kemeja        <NA>       1500… 1      NA    Sinta99 Jaka…
##  90    1140 11-03-2024 -             Aksesoris  2500… 1      NA    _anony… -    
##  91    1141 12-03-2024 Smartphone X  Elektronik Rp75… empat  NA    Budi@   Band…
##  92    1142 13-03-2024 -             Elektronik 2500… 1      NA    Sinta99 Sura…
##  93    1143 14-03-2024 Tas Branded   Elektronik 1.20… 3      NA    Andi123 Jaka…
##  94    1144 15-03-2024 Sepatu 'Nike' Elektronik 1500… empat  NA    _anony… Band…
##  95    1145 16-03-2024 Kemeja        Elektronik 1500… 2      NA    Budi@   -    
##  96    1146 17-03-2024 Kemeja        Aksesoris  1500… 1      NA    Sinta99 Sura…
##  97    1147 18-03-2024 Sepatu 'Nike' Fashion    1.20… 2      NA    Andi123 Sura…
##  98    1148 19-03-2024 Sepatu 'Nike' <NA>       1.20… 1      NA    _anony… Jaka…
##  99    1149 20-03-2024 Laptop A      Fashion    1500… 3      NA    _anony… Sura…
## 100    1150 21-03-2024 -             Fashion    1.20… dua    NA    Sinta99 -    
## 101    1201 01-03-2024 Sepatu 'Nike' Fashion    1.20… empat  NA    Andi123 Sura…
## 102    1202 02-03-2024 -             Elektronik 1500… 3      NA    _anony… Jaka…
## 103    1203 03-03-2024 -             Fashion    1.20… dua    NA    Sinta99 Sura…
## 104    1204 04-03-2024 -             <NA>       Rp75… 3      NA    Budi@   Sura…
## 105    1205 05-03-2024 Tas Branded   <NA>       Rp75… dua    NA    Andi123 Jaka…
## 106    1206 06-03-2024 Kemeja        Aksesoris  1500… 2      NA    Andi123 Sura…
## 107    1207 07-03-2024 Laptop A      Elektronik 1.20… 1      NA    Sinta99 Band…
## 108    1208 08-03-2024 Laptop A      <NA>       1500… dua    NA    _anony… -    
## 109    1209 09-03-2024 Sepatu 'Nike' Aksesoris  Rp75… 1      NA    _anony… Band…
## 110    1210 10-03-2024 Tas Branded   Elektronik 1.20… 3      NA    Sinta99 Band…
## 111    1211 11-03-2024 Kemeja        Aksesoris  1.20… 1      NA    _anony… -    
## 112    1212 12-03-2024 -             Aksesoris  2500… empat  NA    _anony… Jaka…
## 113    1213 13-03-2024 -             <NA>       2500… dua    NA    Sinta99 Sura…
## 114    1214 14-03-2024 Sepatu 'Nike' Elektronik 1.20… 2      NA    _anony… Band…
## 115    1215 15-03-2024 -             Fashion    1.20… 2      NA    Budi@   Sura…
## 116    1216 16-03-2024 Sepatu 'Nike' Aksesoris  Rp75… 2      NA    _anony… -    
## 117    1217 17-03-2024 Laptop A      Elektronik 2500… 3      NA    Andi123 Jaka…
## 118    1218 18-03-2024 -             Elektronik 1.20… dua    NA    _anony… -    
## 119    1219 19-03-2024 Kemeja        <NA>       1500… 2      NA    _anony… -    
## 120    1220 20-03-2024 Kemeja        Elektronik 1500… 2      NA    Budi@   Band…
## 121    1221 21-03-2024 Tas Branded   Elektronik 1.20… dua    NA    _anony… Jaka…
## 122    1222 22-03-2024 Sepatu 'Nike' Aksesoris  2500… 3      NA    Sinta99 Sura…
## 123    1223 23-03-2024 Kemeja        Fashion    Rp75… empat  NA    Budi@   Jaka…
## 124    1224 24-03-2024 Kemeja        Aksesoris  1.20… 1      NA    Sinta99 Band…
## 125    1225 25-03-2024 Smartphone X  Fashion    1500… 3      NA    Andi123 Sura…
## 126    1226 26-03-2024 Tas Branded   Aksesoris  1500… 2      NA    Andi123 Jaka…
## 127    1227 27-03-2024 -             <NA>       1.20… dua    NA    _anony… Jaka…
## 128    1228 28-03-2024 -             Elektronik 1.20… 2      NA    Sinta99 -    
## 129    1229 29-03-2024 Kemeja        Fashion    1.20… 3      NA    Sinta99 -    
## 130    1230 30-03-2024 Kemeja        <NA>       Rp75… empat  NA    Andi123 -    
## 131    1231 31-03-2024 Laptop A      Fashion    Rp75… 1      NA    _anony… Band…
## 132    1232 01-04-2024 Laptop A      Elektronik 1.20… empat  NA    Budi@   -    
## 133    1233 02-04-2024 Tas Branded   Aksesoris  1.20… empat  NA    Sinta99 Sura…
## 134    1234 03-04-2024 Smartphone X  Aksesoris  Rp75… 3      NA    _anony… Jaka…
## 135    1235 04-04-2024 Kemeja        Elektronik 2500… 1      NA    _anony… Band…
## 136    1236 05-04-2024 Smartphone X  Elektronik Rp75… 3      NA    _anony… Jaka…
## 137    1237 06-04-2024 -             Fashion    Rp75… 1      NA    Andi123 Sura…
## 138    1238 07-04-2024 Tas Branded   <NA>       2500… 3      NA    _anony… Jaka…
## 139    1239 08-04-2024 Kemeja        Aksesoris  2500… 1      NA    _anony… -    
## 140    1240 09-04-2024 -             Fashion    Rp75… empat  NA    Andi123 Band…
## 141    1241 10-04-2024 Laptop A      <NA>       Rp75… empat  NA    Andi123 -    
## 142    1242 11-04-2024 Laptop A      Elektronik 1500… dua    NA    Sinta99 -    
## 143    1243 12-04-2024 Laptop A      Fashion    1.20… 2      NA    Andi123 -    
## 144    1244 13-04-2024 Laptop A      Elektronik 2500… dua    NA    Sinta99 Sura…
## 145    1245 14-04-2024 Smartphone X  Elektronik 1500… dua    NA    Andi123 Jaka…
## 146    1246 15-04-2024 Smartphone X  <NA>       1.20… 1      NA    Andi123 -    
## 147    1247 16-04-2024 Smartphone X  Fashion    Rp75… 2      NA    Budi@   Jaka…
## 148    1248 17-04-2024 Laptop A      Elektronik 1500… 3      NA    Sinta99 Band…
## 149    1249 18-04-2024 Sepatu 'Nike' Fashion    1500… empat  NA    Sinta99 Jaka…
## 150    1250 19-04-2024 Kemeja        <NA>       Rp75… 3      NA    Andi123 Sura…

2 Data Cleaning

## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
## Data setelah cleaning:
## # A tibble: 6 × 9
##   OrderID Tanggal    Produk        Kategori    Harga Jumlah  Total Pembeli Kota 
##     <dbl> <date>     <chr>         <chr>       <dbl>  <dbl>  <dbl> <chr>   <chr>
## 1    1001 2024-01-01 Laptop A      <NA>       1.5 e7      4 6   e7 Budi@   Band…
## 2    1002 2024-01-02 Tas Branded   Fashion    1.5 e7      2 3   e7 Budi@   Sura…
## 3    1003 2024-01-03 Tas Branded   Aksesoris  1.5 e7      3 4.50e7 <NA>    Band…
## 4    1004 2024-01-04 Kemeja        <NA>       1.5 e7      2 3   e7 Andi123 Band…
## 5    1006 2024-01-06 Smartphone X  Fashion    1.5 e7      4 6   e7 Sinta99 Band…
## 6    1007 2024-01-07 Sepatu 'Nike' Elektronik 1.20e6      3 3.60e6 <NA>    Band…

2.1 Menampilkan seluruh data cleaning

# Atur agar output menampilkan semua baris dan kolom
options(dplyr.print_max = Inf)       # tampilkan semua baris
options(dplyr.print_min = Inf)
options(tibble.width = Inf)          # lebar kolom tak terbatas
options(tibble.max_extra_cols = Inf)
options(width = 1000)                # lebar output di console

# Tampilkan seluruh data
print(df)
## # A tibble: 122 × 9
##     OrderID Tanggal    Produk        Kategori      Harga Jumlah    Total Pembeli Kota    
##       <dbl> <date>     <chr>         <chr>         <dbl>  <dbl>    <dbl> <chr>   <chr>   
##   1    1001 2024-01-01 Laptop A      <NA>       15000000      4 60000000 Budi@   Bandung 
##   2    1002 2024-01-02 Tas Branded   Fashion    15000000      2 30000000 Budi@   Surabaya
##   3    1003 2024-01-03 Tas Branded   Aksesoris  15000000      3 45000000 <NA>    Bandung 
##   4    1004 2024-01-04 Kemeja        <NA>       15000000      2 30000000 Andi123 Bandung 
##   5    1006 2024-01-06 Smartphone X  Fashion    15000000      4 60000000 Sinta99 Bandung 
##   6    1007 2024-01-07 Sepatu 'Nike' Elektronik  1200000      3  3600000 <NA>    Bandung 
##   7    1009 2024-01-09 Smartphone X  Elektronik 15000000      4 60000000 <NA>    <NA>    
##   8    1010 2024-01-10 Sepatu 'Nike' Aksesoris    750000      2  1500000 Sinta99 Surabaya
##   9    1012 2024-01-12 Tas Branded   Aksesoris    250000      4  1000000 Andi123 Surabaya
##  10    1013 2024-01-13 Laptop A      Aksesoris    750000      2  1500000 Sinta99 Surabaya
##  11    1014 2024-01-14 Tas Branded   Elektronik   750000      2  1500000 Sinta99 Surabaya
##  12    1016 2024-01-16 Kemeja        Aksesoris  15000000      2 30000000 <NA>    Surabaya
##  13    1017 2024-01-17 Sepatu 'Nike' Aksesoris    250000      4  1000000 Andi123 Jakarta 
##  14    1018 2024-01-18 Smartphone X  Aksesoris    750000      2  1500000 Sinta99 <NA>    
##  15    1019 2024-01-19 Kemeja        <NA>         750000      2  1500000 Budi@   Surabaya
##  16    1020 2024-01-20 Laptop A      Aksesoris   1200000      1  1200000 <NA>    Surabaya
##  17    1021 2024-01-21 Laptop A      Elektronik 15000000      1 15000000 <NA>    Jakarta 
##  18    1022 2024-01-22 Sepatu 'Nike' Aksesoris    750000      2  1500000 Sinta99 Surabaya
##  19    1023 2024-01-23 Smartphone X  <NA>         750000      3  2250000 Andi123 <NA>    
##  20    1024 2024-01-24 Tas Branded   <NA>       15000000      2 30000000 Andi123 Surabaya
##  21    1025 2024-01-25 Laptop A      Aksesoris  15000000      3 45000000 Andi123 Jakarta 
##  22    1027 2024-01-27 Laptop A      <NA>         250000      3   750000 <NA>    Bandung 
##  23    1028 2024-01-28 Kemeja        <NA>         250000      4  1000000 Budi@   Jakarta 
##  24    1029 2024-01-29 Smartphone X  Fashion     1200000      3  3600000 Sinta99 <NA>    
##  25    1030 2024-01-30 Kemeja        <NA>       15000000      4 60000000 <NA>    Bandung 
##  26    1031 2024-01-31 Sepatu 'Nike' <NA>         750000      1   750000 Budi@   Jakarta 
##  27    1033 2024-02-02 Smartphone X  Elektronik   750000      4  3000000 Budi@   Bandung 
##  28    1034 2024-02-03 Smartphone X  <NA>        1200000      1  1200000 Sinta99 <NA>    
##  29    1035 2024-02-04 Tas Branded   Aksesoris   1200000      2  2400000 Budi@   <NA>    
##  30    1036 2024-02-05 Kemeja        Fashion      750000      4  3000000 Budi@   <NA>    
##  31    1037 2024-02-06 Laptop A      Aksesoris   1200000      4  4800000 Budi@   Bandung 
##  32    1038 2024-02-07 Kemeja        Aksesoris  15000000      3 45000000 Sinta99 Jakarta 
##  33    1039 2024-02-08 Smartphone X  Elektronik   750000      3  2250000 <NA>    <NA>    
##  34    1041 2024-02-10 Laptop A      <NA>         250000      4  1000000 Andi123 Jakarta 
##  35    1042 2024-02-11 Smartphone X  Fashion      750000      2  1500000 Andi123 <NA>    
##  36    1043 2024-02-12 Kemeja        <NA>        1200000      1  1200000 Andi123 <NA>    
##  37    1044 2024-02-13 Sepatu 'Nike' <NA>        1200000      1  1200000 Sinta99 Jakarta 
##  38    1045 2024-02-14 Tas Branded   <NA>         250000      1   250000 Andi123 <NA>    
##  39    1046 2024-02-15 Laptop A      <NA>        1200000      3  3600000 Andi123 Bandung 
##  40    1047 2024-02-16 Kemeja        Fashion      250000      2   500000 <NA>    <NA>    
##  41    1048 2024-02-17 Sepatu 'Nike' Fashion    15000000      3 45000000 Andi123 Jakarta 
##  42    1050 2024-02-19 Smartphone X  Elektronik  1200000      2  2400000 <NA>    Jakarta 
##  43    1101 2024-02-01 Tas Branded   Aksesoris   1200000      2  2400000 Budi@   Bandung 
##  44    1102 2024-02-02 Smartphone X  Fashion      750000      2  1500000 <NA>    <NA>    
##  45    1103 2024-02-03 Kemeja        Fashion    15000000      1 15000000 Budi@   Surabaya
##  46    1104 2024-02-04 Kemeja        Fashion    15000000      4 60000000 <NA>    Bandung 
##  47    1105 2024-02-05 Smartphone X  <NA>       15000000      4 60000000 <NA>    Surabaya
##  48    1107 2024-02-07 Kemeja        Aksesoris   1200000      4  4800000 Andi123 Surabaya
##  49    1109 2024-02-09 Tas Branded   Elektronik   250000      3   750000 Budi@   Bandung 
##  50    1110 2024-02-10 Sepatu 'Nike' Aksesoris  15000000      3 45000000 <NA>    Bandung 
##  51    1111 2024-02-11 Tas Branded   Elektronik 15000000      3 45000000 <NA>    Surabaya
##  52    1112 2024-02-12 Kemeja        <NA>         250000      2   500000 <NA>    Bandung 
##  53    1113 2024-02-13 Tas Branded   Fashion    15000000      3 45000000 <NA>    <NA>    
##  54    1114 2024-02-14 Sepatu 'Nike' Elektronik  1200000      3  3600000 Andi123 Bandung 
##  55    1115 2024-02-15 Tas Branded   Aksesoris    250000      2   500000 Sinta99 Surabaya
##  56    1116 2024-02-16 Smartphone X  Elektronik 15000000      2 30000000 Andi123 Jakarta 
##  57    1118 2024-02-18 Smartphone X  Aksesoris   1200000      4  4800000 Sinta99 <NA>    
##  58    1120 2024-02-20 Kemeja        Aksesoris    750000      4  3000000 Andi123 Jakarta 
##  59    1123 2024-02-23 Smartphone X  Elektronik   750000      3  2250000 <NA>    Jakarta 
##  60    1124 2024-02-24 Laptop A      Elektronik   250000      1   250000 <NA>    Jakarta 
##  61    1125 2024-02-25 Kemeja        Aksesoris    750000      3  2250000 Budi@   Surabaya
##  62    1126 2024-02-26 Sepatu 'Nike' Aksesoris    750000      2  1500000 Sinta99 Surabaya
##  63    1127 2024-02-27 Smartphone X  <NA>       15000000      3 45000000 Andi123 Bandung 
##  64    1128 2024-02-28 Kemeja        Fashion      750000      3  2250000 Andi123 Surabaya
##  65    1129 2024-02-29 Kemeja        Fashion      750000      1   750000 Andi123 Surabaya
##  66    1130 2024-03-01 Tas Branded   Fashion     1200000      3  3600000 <NA>    Bandung 
##  67    1131 2024-03-02 Smartphone X  <NA>         750000      2  1500000 <NA>    Bandung 
##  68    1132 2024-03-03 Kemeja        Aksesoris    750000      1   750000 <NA>    Bandung 
##  69    1133 2024-03-04 Smartphone X  <NA>         750000      3  2250000 Sinta99 Surabaya
##  70    1134 2024-03-05 Kemeja        Aksesoris  15000000      3 45000000 Sinta99 Jakarta 
##  71    1135 2024-03-06 Sepatu 'Nike' Aksesoris    250000      4  1000000 Sinta99 Bandung 
##  72    1136 2024-03-07 Laptop A      <NA>         250000      3   750000 Budi@   Bandung 
##  73    1137 2024-03-08 Kemeja        Aksesoris    250000      3   750000 Andi123 <NA>    
##  74    1138 2024-03-09 Sepatu 'Nike' <NA>         750000      1   750000 Sinta99 <NA>    
##  75    1139 2024-03-10 Kemeja        <NA>       15000000      1 15000000 Sinta99 Jakarta 
##  76    1141 2024-03-12 Smartphone X  Elektronik   750000      4  3000000 Budi@   Bandung 
##  77    1143 2024-03-14 Tas Branded   Elektronik  1200000      3  3600000 Andi123 Jakarta 
##  78    1144 2024-03-15 Sepatu 'Nike' Elektronik 15000000      4 60000000 <NA>    Bandung 
##  79    1145 2024-03-16 Kemeja        Elektronik 15000000      2 30000000 Budi@   <NA>    
##  80    1146 2024-03-17 Kemeja        Aksesoris  15000000      1 15000000 Sinta99 Surabaya
##  81    1147 2024-03-18 Sepatu 'Nike' Fashion     1200000      2  2400000 Andi123 Surabaya
##  82    1148 2024-03-19 Sepatu 'Nike' <NA>        1200000      1  1200000 <NA>    Jakarta 
##  83    1149 2024-03-20 Laptop A      Fashion    15000000      3 45000000 <NA>    Surabaya
##  84    1201 2024-03-01 Sepatu 'Nike' Fashion     1200000      4  4800000 Andi123 Surabaya
##  85    1205 2024-03-05 Tas Branded   <NA>         750000      2  1500000 Andi123 Jakarta 
##  86    1206 2024-03-06 Kemeja        Aksesoris  15000000      2 30000000 Andi123 Surabaya
##  87    1207 2024-03-07 Laptop A      Elektronik  1200000      1  1200000 Sinta99 Bandung 
##  88    1208 2024-03-08 Laptop A      <NA>       15000000      2 30000000 <NA>    <NA>    
##  89    1209 2024-03-09 Sepatu 'Nike' Aksesoris    750000      1   750000 <NA>    Bandung 
##  90    1210 2024-03-10 Tas Branded   Elektronik  1200000      3  3600000 Sinta99 Bandung 
##  91    1211 2024-03-11 Kemeja        Aksesoris   1200000      1  1200000 <NA>    <NA>    
##  92    1214 2024-03-14 Sepatu 'Nike' Elektronik  1200000      2  2400000 <NA>    Bandung 
##  93    1216 2024-03-16 Sepatu 'Nike' Aksesoris    750000      2  1500000 <NA>    <NA>    
##  94    1217 2024-03-17 Laptop A      Elektronik   250000      3   750000 Andi123 Jakarta 
##  95    1219 2024-03-19 Kemeja        <NA>       15000000      2 30000000 <NA>    <NA>    
##  96    1220 2024-03-20 Kemeja        Elektronik 15000000      2 30000000 Budi@   Bandung 
##  97    1221 2024-03-21 Tas Branded   Elektronik  1200000      2  2400000 <NA>    Jakarta 
##  98    1222 2024-03-22 Sepatu 'Nike' Aksesoris    250000      3   750000 Sinta99 Surabaya
##  99    1223 2024-03-23 Kemeja        Fashion      750000      4  3000000 Budi@   Jakarta 
## 100    1224 2024-03-24 Kemeja        Aksesoris   1200000      1  1200000 Sinta99 Bandung 
## 101    1225 2024-03-25 Smartphone X  Fashion    15000000      3 45000000 Andi123 Surabaya
## 102    1226 2024-03-26 Tas Branded   Aksesoris  15000000      2 30000000 Andi123 Jakarta 
## 103    1229 2024-03-29 Kemeja        Fashion     1200000      3  3600000 Sinta99 <NA>    
## 104    1230 2024-03-30 Kemeja        <NA>         750000      4  3000000 Andi123 <NA>    
## 105    1231 2024-03-31 Laptop A      Fashion      750000      1   750000 <NA>    Bandung 
## 106    1232 2024-04-01 Laptop A      Elektronik  1200000      4  4800000 Budi@   <NA>    
## 107    1233 2024-04-02 Tas Branded   Aksesoris   1200000      4  4800000 Sinta99 Surabaya
## 108    1234 2024-04-03 Smartphone X  Aksesoris    750000      3  2250000 <NA>    Jakarta 
## 109    1235 2024-04-04 Kemeja        Elektronik   250000      1   250000 <NA>    Bandung 
## 110    1236 2024-04-05 Smartphone X  Elektronik   750000      3  2250000 <NA>    Jakarta 
## 111    1238 2024-04-07 Tas Branded   <NA>         250000      3   750000 <NA>    Jakarta 
## 112    1239 2024-04-08 Kemeja        Aksesoris    250000      1   250000 <NA>    <NA>    
## 113    1241 2024-04-10 Laptop A      <NA>         750000      4  3000000 Andi123 <NA>    
## 114    1242 2024-04-11 Laptop A      Elektronik 15000000      2 30000000 Sinta99 <NA>    
## 115    1243 2024-04-12 Laptop A      Fashion     1200000      2  2400000 Andi123 <NA>    
## 116    1244 2024-04-13 Laptop A      Elektronik   250000      2   500000 Sinta99 Surabaya
## 117    1245 2024-04-14 Smartphone X  Elektronik 15000000      2 30000000 Andi123 Jakarta 
## 118    1246 2024-04-15 Smartphone X  <NA>        1200000      1  1200000 Andi123 <NA>    
## 119    1247 2024-04-16 Smartphone X  Fashion      750000      2  1500000 Budi@   Jakarta 
## 120    1248 2024-04-17 Laptop A      Elektronik 15000000      3 45000000 Sinta99 Bandung 
## 121    1249 2024-04-18 Sepatu 'Nike' Fashion    15000000      4 60000000 Sinta99 Jakarta 
## 122    1250 2024-04-19 Kemeja        <NA>         750000      3  2250000 Andi123 Surabaya

3 Data Transformation

library(dplyr)
library(lubridate)
library(knitr)

# Tambahkan kolom Bulan
bulan_map <- c("Januari", "Februari", "Maret")
df <- df %>%
  mutate(Bulan = bulan_map[month(Tanggal)])

# Total per kategori
penjualan_per_kategori <- df %>%
  group_by(Kategori) %>%
  summarise(Total = sum(Total, na.rm = TRUE)) %>%
  arrange(desc(Total))

# Total per kota
penjualan_per_kota <- df %>%
  group_by(Kota) %>%
  summarise(Total = sum(Total, na.rm = TRUE)) %>%
  arrange(desc(Total))

# Total per bulan (tanpa forcats)
penjualan_per_bulan <- df %>%
  group_by(Bulan) %>%
  summarise(Total = sum(Total, na.rm = TRUE)) %>%
  mutate(Bulan = factor(Bulan, levels = c("Januari", "Februari", "Maret"))) %>%
  arrange(Bulan)

# Tampilkan
cat("Penjualan Total per Kategori:\n")
## Penjualan Total per Kategori:
kable(penjualan_per_kategori)
Kategori Total
Fashion 440150000
Elektronik 419350000
NA 393350000
Aksesoris 380850000
cat("\nPenjualan Total per Kota:\n")
## 
## Penjualan Total per Kota:
kable(penjualan_per_kota)
Kota Total
Bandung 583750000
Jakarta 392050000
Surabaya 384500000
NA 273400000
cat("\nPenjualan Total per Bulan:\n")
## 
## Penjualan Total per Bulan:
kable(penjualan_per_bulan)
Bulan Total
Januari 489150000
Februari 494400000
Maret 458950000
NA 191200000

Visual

Penjualan Perkategori

library(ggplot2)
library(scales)

# Contoh data
penjualan_per_kategori <- data.frame(
  Kategori = c("Fashion", "Elektronik", "Aksesoris"),
  Total = c(430000000, 415000000, 380000000)
)

# Visualisasi seperti Python (horizontal, urut menurun, warna gradasi biru)
ggplot(penjualan_per_kategori, aes(x = reorder(Kategori, Total), y = Total, fill = Total)) +
  geom_col() +
  coord_flip() +
  labs(
    title = "Total Penjualan per Kategori",
    x = "Kategori",
    y = "Total"
  ) +
  scale_y_continuous(labels = comma) +
  scale_fill_gradient(low = "#6baed6", high = "#2171b5") +  
  theme_minimal(base_size = 14) +
  theme(legend.position = "none")

Penujualan Perkota

library(ggplot2)
library(dplyr)

# Filter data: hanya ambil baris yang kolom 'Kota'-nya tidak NA
df_kota <- df %>%
  filter(!is.na(Kota)) %>%
  group_by(Kota) %>%
  summarise(Total = sum(Total, na.rm = TRUE)) %>%
  arrange(desc(Total))

# Plot tanpa NA
ggplot(df_kota, aes(x = reorder(Kota, Total), y = Total, fill = Kota)) +
  geom_col() +
  coord_flip() +
  labs(title = "Total Penjualan per Kota", x = "Kota", y = "Total") +
  theme_minimal() +
  theme(legend.position = "none") +
  scale_fill_brewer(palette = "Greens")

Penjualan Perbulan

library(ggplot2)
library(dplyr)
library(lubridate)

Sys.setlocale("LC_TIME", "id_ID.UTF-8")  # agar bulan dalam Bahasa Indonesia
## [1] "id_ID.UTF-8"
df$Tanggal <- as.Date(df$Tanggal)
df$Bulan <- format(df$Tanggal, "%B")
urutan_bulan <- c("Januari", "Februari", "Maret", "April", "Mei", "Juni",
                  "Juli", "Agustus", "September", "Oktober", "November", "Desember")
df$Bulan <- factor(df$Bulan, levels = urutan_bulan)

df_bulan <- df %>%
  group_by(Bulan) %>%
  summarise(Total = sum(Total, na.rm = TRUE)) %>%
  filter(!is.na(Bulan))

ggplot(df_bulan, aes(x = Bulan, y = Total, fill = Bulan)) +
  geom_col() +
  labs(title = "Total Penjualan per Bulan", x = "Bulan", y = "Total") +
  theme_minimal() +
  scale_fill_brewer(palette = "Oranges") +
  theme(legend.position = "none")