Data merupakan kumpulan informasi yang dapat digunakan untuk memperoleh informasi dan mendukung proses analisis. Sebelum dilakukan analisis lebih lanjut, data perlu diperiksa dan dipersiapkan terlebih dahulu agar data yang digunakan dapt memiliki kualitas yang baik. Data yang digunakan dalam analisis ini merupakan data transaksi penjualan kafe. Data awal terdiri dari 10.000 transaksi dengan beberapa variabel, di antaranya Item, Quantity, Price Per Unit, Total Spent, Payment Method, Location, dan Transaction Date. Data tersebut masih mengandung berbagai macam permasalahan, seperti data kosong (missing value), nilai ERROR, dan nilai UNKNOWN. Pada analisis ini, dari 10.000 data dilakukan pengambilan sampel secara acak melaui R sebanyak 1.000 data. Sampel tersebut kemudian digunakan untuk proses pemeriksaan dan pengolahan data. Setelah data diperiksa dan dibersihkan, dilakukan pengolahan terhadap variabel kategorik, khususnya Item, Quantity, dan Location. Tujuan dari pengolahan data ini adalah untuk memahami kondisi data, melakukan proses encoding, serta mengubah data menjadi bentuk yang dapat digunakan dalam proses analisis menggunakan komputer.
Data awal yang digunakan merupakan data transaksi kafe yang masih dalam kondisi data kotor dengan berbagai macam permasalahan. Jumlah data awal adalah 10.000 baris. Karena jumlah data yang cukup besar, dilakukan pengambilan sampel secara acak sebanyak 1.000 data menggunakan R. Pengambilan sampel dilakukan tanpa pengembalian, sehingga data yang terambil pertama tidak akan terulang lagi di pengambilan kedua.
## Transaction.ID Item Quantity Price.Per.Unit Total.Spent Payment.Method
## 1 TXN_1961373 Coffee 2 2.0 4.0 Credit Card
## 2 TXN_4977031 Cake 4 3.0 12.0 Cash
## 3 TXN_4271903 Cookie 4 1.0 ERROR Credit Card
## 4 TXN_7034554 Salad 2 5.0 10.0 UNKNOWN
## 5 TXN_3160411 Coffee 2 2.0 4.0 Digital Wallet
## 6 TXN_2602893 Smoothie 5 4.0 20.0 Credit Card
## Location Transaction.Date
## 1 Takeaway 8 09 2023
## 2 In-store 16 05 2023
## 3 In-store 19 07 2023
## 4 UNKNOWN 27 04 2023
## 5 In-store 11 06 2023
## 6 31 03 2023
## [1] 10000 8
set.seed(123)
indeks_sampel <- sample(1:nrow(tabel1),
size = 1000,
replace = FALSE)
data_sampel <- tabel1[indeks_sampel, ]
dim(data_sampel)## [1] 1000 8
## Transaction.ID Item Quantity Price.Per.Unit Total.Spent Payment.Method
## 2463 TXN_6928775 2 1.0 2.0 Cash
## 2511 TXN_7503593 Cookie 5 1.0 5.0 Digital Wallet
## 8718 TXN_7677646 Sandwich 5 4.0 20.0
## 2986 TXN_9725461 Smoothie 3 4.0 12.0 Credit Card
## 1842 TXN_9678108 Salad 3 5.0 15.0 ERROR
## 9334 TXN_3830888 Coffee 4 2.0 8.0
## Location Transaction.Date
## 2463 In-store 25 03 2023
## 2511 Takeaway 19 04 2023
## 8718 15 02 2023
## 2986 In-store 25 11 2023
## 1842 Takeaway 10 10 2023
## 9334 In-store 20 02 2023
Berdasarkan output, data awal terdiri dari 10.000 baris dan 8 variabel. Setelah dilakukan pengambilan sampel secara acak, diperoleh 1.000 baris data dengan 8 variabel. Penggunaan set.seed(123) dilakukan agar proses pengambilan sampel dapat menghasilkan sampel yang sama ketika syntax dijalankan kembali.
Setelah sampel didapatkan, dilakukan pemeriksaan terhadap data yang memiliki nilai ERROR, UNKNOWN, dan nilai kosong.
## [1] 183
## [1] 0
## [1] 173
## Warning in is.na(data): is.na() applied to non-(list or vector) of type
## 'closure'
## [1] 0
Perintah head(data_sampel) digunakan untuk melihat beberapa data pertama. Selanjutnya, sum(data_sampel == “ERROR”, na.rm = TRUE) digunakan untuk menghitung jumlah nilai ERROR, sedangkan sum(data_sampel == “UNKNOWN”, na.rm = TRUE) digunakan untuk mengetahui jumlah nilai UNKNOWN.Untuk mengetahui data yang kosong digunakan is.na(). Berdasarkan hasil pemeriksaan diatas, banyak data sampel yang masih mengandung berbagai nilai yang tidak valid. Oleh karena itu, data masih haru dilakukan proses cleaning data agar dapat digunakan untuk pengolahan data berikutnya.
Setelah kondisi data diketahui, selanjutnya dilakukan proses cleaning data untuk memperbaiki nilai yang kosong, ERROR, dan UNKNOWN pada data. Proses cleaning dilakukan tanpa mengurangi jumlah data sampel, sehingga seluruh data sampel tetap digunakan dalam analisis. Perbaikan data dilakukan dengan mempertimbangkan informasi yang ada pada data. Untuk beberapa nilai yang masih dapat ditentukan berdasarkan hubungan antarvariabel, pengisiannya dilakukan menggunakan hubungan antar variabel tersebut. Contohnya, pada nilai di variabel Item dapat disesuaikan dengan informasi pada nilai Price Per Unit yang tersedia. Sementara itu, apabila ada nilai kosong, ERROR, atau UNKNOWN yang tidak dapat ditentukan menggunakan informasi dari variabel lain, nilai tersebut diisi menggunakan metode imputansi data. Dengan begitu, data yang bermasalah dapat diperbaiki tanpa menghapus baris data.
data_cleaning <-read.csv("D:\\Documents\\Cleaning Data 1.csv", header=TRUE, sep=";")
data_cleaning$X <- NULL
head(data_cleaning)## Transaction.ID Item Quantity Price.Per.Unit Total.Spent Payment.Method
## 1 TXN_2176024 Coffee 5 2.0 10.0 Digital Wallet
## 2 TXN_6327139 Sandwich 4 4.0 16.0 Credit Card
## 3 TXN_5488764 Coffee 4 2.0 8.0 Digital Wallet
## 4 TXN_9530003 Salad 1 5.0 5.0 Digital Wallet
## 5 TXN_3753993 Sandwich 5 4.0 20.0 Credit Card
## 6 TXN_2251128 Smoothie 3 4.0 12.0 Credit Card
## Location
## 1 In-store
## 2 Takeaway
## 3 Takeaway
## 4 Takeaway
## 5 Takeaway
## 6 In-store
Setelah data disiapkan, tahap selanjutnya adalah melakukan pengolahan data kategorik. Metode yang digunakan pada pengolahan data ini adalah label encoding dan one hot encoding. Tiga variabel yang diambil untuk transformasi data adalah Item, Location, dan Quantity. Namun, karena variabel Qunatity meruapakan variabel numerik maka tidak dilakukan transformasi label maupun one hot encoding.
tabel2 <-read.csv("D:\\Documents\\Cleaning Data 1.csv", header=TRUE, sep=";")
# Mengubah Item menjadi factor
Item_factor <- factor(tabel2$Item)
# Melihat hasil factor
Item_factor## [1] Coffee Sandwich Coffee Salad Sandwich Smoothie Salad Salad
## [9] Juice Coffee Smoothie Smoothie Salad Cake Tea Sandwich
## [17] Cookie Tea Smoothie Juice Smoothie Cake Cake Juice
## [25] Salad Salad Smoothie Tea Salad Juice Cookie Salad
## [33] Cake Cake Cake Salad Smoothie Smoothie Coffee Smoothie
## [41] Cookie Coffee Coffee Salad Sandwich Cake Salad Sandwich
## [49] Tea Smoothie Smoothie Cake Juice Juice Cake Salad
## [57] Cake Cake Tea Cake Sandwich Smoothie Sandwich Smoothie
## [65] Sandwich Cake Cake Cookie Tea Tea Smoothie Smoothie
## [73] Cake Cake Coffee Coffee Tea Cookie Salad Smoothie
## [81] Coffee Cake Tea Juice Cake Tea Tea Sandwich
## [89] Salad Tea Salad Sandwich Salad Juice Juice Salad
## [97] Juice Cake Cookie Tea Smoothie Tea Juice Smoothie
## [105] Tea Juice Tea Coffee Smoothie Cookie Cake Sandwich
## [113] Tea Cake Juice Cake Coffee Cake Cookie Sandwich
## [121] Salad Smoothie Sandwich Cookie Juice Tea Salad Cookie
## [129] Cake Cookie Salad Juice Coffee Cake Coffee Tea
## [137] Smoothie Juice Cookie Sandwich Tea Cake Cake Cake
## [145] Sandwich Coffee Cookie Smoothie Coffee Coffee Smoothie Salad
## [153] Tea Coffee Tea Juice Sandwich Cake Cookie Cookie
## [161] Cookie Cookie Cookie Sandwich Cake Cake Cookie Cake
## [169] Tea Cookie Cake Sandwich Cookie Cookie Sandwich Cookie
## [177] Cookie Cookie Cookie Cake Smoothie Cake Salad Salad
## [185] Cake Cake Juice Juice Smoothie Sandwich Smoothie Tea
## [193] Cake Coffee Juice Cookie Cake Juice Tea Sandwich
## [201] Smoothie Tea Juice Cookie Coffee Tea Sandwich Sandwich
## [209] Juice Smoothie Tea Sandwich Tea Sandwich Juice Smoothie
## [217] Salad Cake Tea Sandwich Sandwich Tea Tea Sandwich
## [225] Coffee Tea Salad Tea Coffee Salad Tea Salad
## [233] Smoothie Juice Coffee Cake Cake Sandwich Salad Smoothie
## [241] Sandwich Sandwich Cookie Cake Coffee Juice Tea Smoothie
## [249] Coffee Sandwich Salad Tea Juice Sandwich Cake Coffee
## [257] Tea Coffee Juice Tea Juice Salad Cookie Coffee
## [265] Juice Smoothie Cake Smoothie Tea Sandwich Juice Smoothie
## [273] Smoothie Coffee Smoothie Cake Smoothie Sandwich Cake Cake
## [281] Cookie Sandwich Juice Salad Smoothie Smoothie Salad Salad
## [289] Smoothie Juice Cake Coffee Cookie Tea Tea Salad
## [297] Sandwich Juice Coffee Cake Cookie Sandwich Cake Salad
## [305] Tea Smoothie Smoothie Smoothie Tea Salad Juice Salad
## [313] Tea Sandwich Coffee Smoothie Cake Sandwich Coffee Cake
## [321] Smoothie Coffee Tea Smoothie Smoothie Cookie Coffee Salad
## [329] Smoothie Tea Coffee Juice Cake Juice Cookie Cake
## [337] Juice Salad Cookie Sandwich Juice Salad Cake Smoothie
## [345] Salad Salad Juice Sandwich Salad Salad Coffee Coffee
## [353] Cookie Cake Salad Coffee Sandwich Coffee Smoothie Juice
## [361] Sandwich Tea Cookie Juice Smoothie Tea Salad Tea
## [369] Cookie Smoothie Salad Smoothie Salad Smoothie Juice Salad
## [377] Smoothie Cake Tea Juice Coffee Coffee Sandwich Sandwich
## [385] Salad Coffee Smoothie Salad Juice Smoothie Salad Cookie
## [393] Cookie Cake Sandwich Sandwich Coffee Smoothie Coffee Smoothie
## [401] Salad Sandwich Juice Tea Salad Cookie Smoothie Cookie
## [409] Sandwich Smoothie Tea Salad Sandwich Salad Cake Cake
## [417] Juice Smoothie Cookie Cake Coffee Cake Cookie Smoothie
## [425] Sandwich Sandwich Juice Juice Sandwich Tea Salad Coffee
## [433] Tea Sandwich Tea Cake Sandwich Juice Salad Tea
## [441] Juice Juice Salad Coffee Cake Cake Tea Sandwich
## [449] Smoothie Cake Cake Tea Coffee Cookie Sandwich Juice
## [457] Smoothie Cookie Tea Sandwich Tea Cake Salad Juice
## [465] Coffee Juice Juice Cake Cookie Tea Coffee Sandwich
## [473] Salad Juice Tea Smoothie Salad Smoothie Coffee Salad
## [481] Juice Cookie Coffee Juice Cookie Cake Cookie Coffee
## [489] Coffee Cookie Tea Cookie Salad Smoothie Sandwich Sandwich
## [497] Salad Salad Sandwich Cookie Coffee Sandwich Salad Cake
## [505] Tea Cake Smoothie Tea Juice Cookie Salad Sandwich
## [513] Cookie Salad Tea Juice Juice Smoothie Cookie Salad
## [521] Salad Juice Tea Salad Juice Juice Smoothie Tea
## [529] Smoothie Sandwich Smoothie Sandwich Sandwich Cake Salad Tea
## [537] Coffee Cake Sandwich Tea Sandwich Cookie Coffee Tea
## [545] Tea Cake Juice Smoothie Cake Cookie Smoothie Smoothie
## [553] Cookie Sandwich Salad Salad Cookie Cake Salad Tea
## [561] Smoothie Salad Tea Smoothie Tea Cake Cookie Tea
## [569] Juice Sandwich Juice Sandwich Smoothie Coffee Cake Tea
## [577] Cookie Cake Coffee Coffee Smoothie Juice Tea Cookie
## [585] Coffee Smoothie Tea Smoothie Salad Salad Coffee Smoothie
## [593] Cake Cake Cookie Salad Sandwich Sandwich Juice Coffee
## [601] Coffee Smoothie Cake Sandwich Tea Sandwich Smoothie Sandwich
## [609] Salad Coffee Salad Tea Juice Smoothie Cookie Cookie
## [617] Smoothie Salad Cake Cake Cake Tea Juice Sandwich
## [625] Juice Juice Tea Tea Juice Cookie Coffee Cake
## [633] Juice Cookie Coffee Juice Coffee Juice Salad Smoothie
## [641] Cookie Salad Tea Sandwich Cookie Cookie Tea Salad
## [649] Cookie Smoothie Tea Cake Salad Juice Juice Juice
## [657] Juice Coffee Tea Cookie Cake Coffee Cookie Juice
## [665] Smoothie Cake Tea Sandwich Juice Cookie Smoothie Juice
## [673] Cookie Smoothie Coffee Smoothie Cookie Coffee Cake Juice
## [681] Cake Tea Coffee Coffee Coffee Smoothie Salad Sandwich
## [689] Smoothie Cake Coffee Coffee Sandwich Sandwich Salad Cookie
## [697] Smoothie Coffee Salad Cake Smoothie Cake Tea Salad
## [705] Coffee Sandwich Coffee Cookie Smoothie Sandwich Cookie Sandwich
## [713] Coffee Cookie Tea Salad Tea Salad Juice Cookie
## [721] Tea Cake Juice Juice Juice Cake Coffee Tea
## [729] Cake Salad Cake Salad Tea Tea Juice Cake
## [737] Tea Cake Sandwich Salad Sandwich Cake Salad Cake
## [745] Coffee Sandwich Salad Salad Sandwich Juice Tea Cookie
## [753] Smoothie Tea Sandwich Cake Cookie Sandwich Smoothie Tea
## [761] Tea Salad Smoothie Salad Tea Smoothie Tea Salad
## [769] Cookie Juice Cake Cake Smoothie Tea Smoothie Salad
## [777] Sandwich Smoothie Coffee Salad Smoothie Coffee Smoothie Coffee
## [785] Tea Coffee Smoothie Cake Cake Juice Cake Sandwich
## [793] Cookie Smoothie Cake Sandwich Tea Sandwich Cookie Juice
## [801] Cookie Juice Tea Juice Sandwich Smoothie Juice Sandwich
## [809] Sandwich Smoothie Smoothie Smoothie Cookie Coffee Coffee Tea
## [817] Sandwich Coffee Smoothie Cake Cookie Sandwich Salad Cake
## [825] Coffee Cake Tea Cookie Tea Coffee Cookie Cake
## [833] Juice Tea Coffee Coffee Coffee Sandwich Coffee Coffee
## [841] Sandwich Cookie Tea Tea Salad Sandwich Cookie Smoothie
## [849] Tea Coffee Tea Salad Coffee Salad Coffee Cookie
## [857] Smoothie Salad Coffee Tea Sandwich Juice Juice Cake
## [865] Cake Tea Cookie Smoothie Sandwich Cake Smoothie Smoothie
## [873] Tea Tea Cake Smoothie Juice Juice Smoothie Smoothie
## [881] Tea Smoothie Salad Cake Coffee Coffee Sandwich Cake
## [889] Salad Sandwich Sandwich Sandwich Cake Cookie Salad Juice
## [897] Salad Salad Coffee Cake Coffee Juice Tea Cake
## [905] Coffee Salad Salad Cake Smoothie Sandwich Coffee Smoothie
## [913] Coffee Sandwich Sandwich Smoothie Cookie Cake Smoothie Tea
## [921] Juice Smoothie Sandwich Cake Cookie Cookie Sandwich Tea
## [929] Sandwich Sandwich Tea Juice Cookie Coffee Tea Tea
## [937] Cake Juice Cake Cake Cookie Salad Coffee Juice
## [945] Cake Cookie Sandwich Coffee Juice Tea Salad Smoothie
## [953] Coffee Cookie Tea Salad Sandwich Salad Cake Salad
## [961] Cake Cake Smoothie Juice Cookie Tea Cookie Salad
## [969] Smoothie Cake Cookie Tea Tea Tea Salad Cake
## [977] Salad Smoothie Tea Sandwich Cookie Coffee Smoothie Cake
## [985] Sandwich Coffee Juice Coffee Cookie Cake Coffee Smoothie
## [993] Salad Coffee Juice Salad Juice Sandwich Smoothie Coffee
## Levels: Cake Coffee Cookie Juice Salad Sandwich Smoothie Tea
## [1] "Cake" "Coffee" "Cookie" "Juice" "Salad" "Sandwich" "Smoothie"
## [8] "Tea"
# Mengubah factor menjadi kode angka
Item_code <- as.numeric(Item_factor)
# Membuat data frame hasil encoding
data_encoded <- data.frame(tabel1$Item, Item_code)
# Melihat hasilnya
head(data_encoded)## tabel1.Item Item_code
## 1 Coffee 2
## 2 Cake 6
## 3 Cookie 2
## 4 Salad 5
## 5 Coffee 6
## 6 Smoothie 7
Variabel Item diubah menjadi factor terlebih dahulu. Kemudian, levels() digunakan untuk melihat kategori yang terdapat dalam variabel tersebut. Lalu, as.numeric() digunakan untuk mengubah level kategori menjadi kode numerik. Pada transformasi ini kategori Item ditentukan terlebih dahulu melalui levels, lalu setiap kategori diberikan kode numerik berdasarkan urutan kategori tersebut.
tabel2 <-read.csv("D:\\Documents\\Cleaning Data 1.csv", header=TRUE, sep=";")
# Mengubah menjadi factor
Location_factor <- factor(tabel2$Location)
# Melihat factor
Location_factor## [1] In-store Takeaway Takeaway Takeaway Takeaway In-store Takeaway Takeaway
## [9] In-store Takeaway Takeaway Takeaway Takeaway Takeaway In-store Takeaway
## [17] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [25] In-store In-store Takeaway Takeaway Takeaway In-store In-store Takeaway
## [33] Takeaway Takeaway Takeaway Takeaway Takeaway In-store Takeaway Takeaway
## [41] In-store Takeaway Takeaway In-store Takeaway In-store In-store Takeaway
## [49] Takeaway In-store Takeaway Takeaway In-store Takeaway Takeaway Takeaway
## [57] Takeaway Takeaway In-store In-store Takeaway Takeaway Takeaway In-store
## [65] Takeaway In-store Takeaway Takeaway In-store Takeaway In-store Takeaway
## [73] In-store In-store Takeaway In-store In-store Takeaway Takeaway In-store
## [81] Takeaway Takeaway Takeaway Takeaway Takeaway In-store In-store In-store
## [89] Takeaway Takeaway Takeaway In-store Takeaway Takeaway In-store Takeaway
## [97] Takeaway In-store In-store In-store Takeaway Takeaway Takeaway In-store
## [105] In-store In-store Takeaway In-store In-store Takeaway In-store Takeaway
## [113] In-store In-store In-store Takeaway Takeaway Takeaway In-store In-store
## [121] Takeaway Takeaway In-store Takeaway Takeaway Takeaway Takeaway Takeaway
## [129] Takeaway In-store Takeaway In-store Takeaway Takeaway Takeaway In-store
## [137] In-store In-store In-store Takeaway Takeaway Takeaway Takeaway Takeaway
## [145] In-store Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway In-store
## [153] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway In-store Takeaway
## [161] In-store In-store Takeaway In-store Takeaway In-store Takeaway Takeaway
## [169] In-store Takeaway In-store In-store Takeaway Takeaway Takeaway Takeaway
## [177] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [185] In-store In-store Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [193] Takeaway Takeaway In-store Takeaway Takeaway In-store Takeaway Takeaway
## [201] Takeaway In-store In-store In-store Takeaway Takeaway In-store Takeaway
## [209] In-store Takeaway In-store In-store In-store In-store Takeaway Takeaway
## [217] Takeaway Takeaway In-store In-store Takeaway Takeaway Takeaway In-store
## [225] Takeaway Takeaway Takeaway Takeaway Takeaway In-store In-store In-store
## [233] Takeaway In-store In-store Takeaway Takeaway Takeaway Takeaway Takeaway
## [241] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway In-store
## [249] Takeaway Takeaway Takeaway In-store Takeaway In-store Takeaway Takeaway
## [257] Takeaway Takeaway In-store Takeaway Takeaway In-store In-store Takeaway
## [265] Takeaway Takeaway Takeaway In-store In-store In-store Takeaway Takeaway
## [273] Takeaway Takeaway Takeaway Takeaway In-store Takeaway Takeaway In-store
## [281] Takeaway Takeaway Takeaway Takeaway Takeaway In-store Takeaway Takeaway
## [289] Takeaway Takeaway Takeaway Takeaway In-store In-store In-store Takeaway
## [297] In-store Takeaway Takeaway In-store Takeaway Takeaway Takeaway In-store
## [305] Takeaway Takeaway In-store Takeaway In-store Takeaway Takeaway In-store
## [313] Takeaway In-store In-store Takeaway In-store Takeaway In-store Takeaway
## [321] Takeaway Takeaway In-store Takeaway Takeaway Takeaway Takeaway Takeaway
## [329] Takeaway Takeaway Takeaway In-store Takeaway Takeaway Takeaway In-store
## [337] Takeaway In-store Takeaway Takeaway Takeaway In-store Takeaway In-store
## [345] Takeaway Takeaway Takeaway In-store Takeaway Takeaway Takeaway Takeaway
## [353] Takeaway Takeaway In-store In-store Takeaway Takeaway Takeaway In-store
## [361] Takeaway Takeaway Takeaway Takeaway In-store Takeaway In-store Takeaway
## [369] Takeaway Takeaway Takeaway Takeaway In-store Takeaway Takeaway Takeaway
## [377] In-store Takeaway In-store Takeaway Takeaway Takeaway In-store In-store
## [385] In-store Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [393] Takeaway Takeaway In-store Takeaway Takeaway Takeaway Takeaway Takeaway
## [401] In-store In-store In-store In-store Takeaway In-store Takeaway In-store
## [409] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway In-store In-store
## [417] Takeaway In-store Takeaway Takeaway In-store Takeaway Takeaway Takeaway
## [425] In-store In-store Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [433] In-store Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [441] In-store Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [449] Takeaway Takeaway Takeaway In-store Takeaway In-store Takeaway Takeaway
## [457] Takeaway Takeaway In-store In-store Takeaway Takeaway Takeaway Takeaway
## [465] In-store Takeaway Takeaway In-store In-store Takeaway Takeaway Takeaway
## [473] Takeaway Takeaway Takeaway In-store In-store Takeaway Takeaway Takeaway
## [481] Takeaway In-store Takeaway In-store Takeaway Takeaway Takeaway Takeaway
## [489] Takeaway Takeaway Takeaway In-store Takeaway Takeaway Takeaway Takeaway
## [497] Takeaway In-store Takeaway Takeaway Takeaway Takeaway In-store Takeaway
## [505] Takeaway Takeaway Takeaway In-store In-store Takeaway Takeaway Takeaway
## [513] Takeaway Takeaway Takeaway In-store Takeaway Takeaway Takeaway In-store
## [521] Takeaway In-store In-store In-store Takeaway In-store Takeaway Takeaway
## [529] Takeaway In-store Takeaway In-store Takeaway In-store Takeaway In-store
## [537] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway In-store Takeaway
## [545] Takeaway Takeaway Takeaway Takeaway Takeaway In-store Takeaway Takeaway
## [553] In-store In-store In-store Takeaway In-store Takeaway Takeaway In-store
## [561] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [569] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway In-store Takeaway
## [577] Takeaway Takeaway Takeaway In-store Takeaway In-store In-store Takeaway
## [585] Takeaway Takeaway In-store Takeaway In-store In-store Takeaway Takeaway
## [593] Takeaway Takeaway In-store Takeaway In-store Takeaway In-store Takeaway
## [601] In-store Takeaway Takeaway Takeaway In-store In-store Takeaway Takeaway
## [609] Takeaway Takeaway In-store In-store Takeaway Takeaway Takeaway Takeaway
## [617] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [625] Takeaway Takeaway Takeaway In-store In-store In-store In-store Takeaway
## [633] Takeaway Takeaway In-store In-store In-store Takeaway Takeaway Takeaway
## [641] In-store In-store Takeaway Takeaway Takeaway Takeaway In-store In-store
## [649] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [657] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway In-store Takeaway
## [665] Takeaway Takeaway Takeaway In-store Takeaway In-store Takeaway Takeaway
## [673] Takeaway Takeaway In-store Takeaway Takeaway In-store Takeaway Takeaway
## [681] Takeaway Takeaway Takeaway In-store Takeaway Takeaway Takeaway Takeaway
## [689] Takeaway Takeaway In-store In-store In-store In-store Takeaway In-store
## [697] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway In-store Takeaway
## [705] In-store Takeaway Takeaway Takeaway In-store In-store Takeaway Takeaway
## [713] Takeaway Takeaway In-store Takeaway In-store In-store Takeaway Takeaway
## [721] In-store Takeaway In-store In-store Takeaway In-store Takeaway Takeaway
## [729] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [737] Takeaway In-store In-store Takeaway Takeaway Takeaway Takeaway Takeaway
## [745] Takeaway In-store Takeaway In-store Takeaway Takeaway In-store In-store
## [753] Takeaway In-store Takeaway Takeaway Takeaway In-store Takeaway In-store
## [761] Takeaway In-store In-store Takeaway In-store Takeaway Takeaway In-store
## [769] Takeaway In-store Takeaway Takeaway Takeaway Takeaway Takeaway In-store
## [777] Takeaway Takeaway Takeaway In-store In-store In-store Takeaway In-store
## [785] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [793] In-store Takeaway Takeaway Takeaway Takeaway Takeaway In-store Takeaway
## [801] Takeaway In-store In-store In-store Takeaway In-store Takeaway Takeaway
## [809] Takeaway In-store Takeaway Takeaway Takeaway Takeaway Takeaway In-store
## [817] In-store Takeaway Takeaway Takeaway Takeaway In-store In-store Takeaway
## [825] Takeaway Takeaway Takeaway In-store In-store Takeaway Takeaway Takeaway
## [833] Takeaway Takeaway In-store Takeaway Takeaway In-store Takeaway In-store
## [841] In-store Takeaway Takeaway Takeaway In-store In-store Takeaway Takeaway
## [849] In-store Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [857] In-store In-store Takeaway In-store Takeaway Takeaway Takeaway Takeaway
## [865] In-store In-store Takeaway Takeaway In-store In-store Takeaway Takeaway
## [873] Takeaway Takeaway Takeaway In-store Takeaway Takeaway Takeaway Takeaway
## [881] In-store Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [889] Takeaway In-store In-store Takeaway Takeaway Takeaway Takeaway In-store
## [897] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [905] Takeaway In-store Takeaway Takeaway In-store Takeaway In-store Takeaway
## [913] Takeaway Takeaway Takeaway In-store Takeaway Takeaway In-store In-store
## [921] In-store Takeaway Takeaway In-store In-store In-store Takeaway Takeaway
## [929] Takeaway Takeaway Takeaway In-store Takeaway Takeaway Takeaway Takeaway
## [937] In-store Takeaway Takeaway Takeaway In-store Takeaway Takeaway Takeaway
## [945] Takeaway In-store Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [953] Takeaway Takeaway In-store Takeaway Takeaway Takeaway In-store In-store
## [961] Takeaway Takeaway Takeaway In-store Takeaway In-store Takeaway In-store
## [969] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway
## [977] Takeaway Takeaway Takeaway Takeaway Takeaway Takeaway In-store Takeaway
## [985] In-store Takeaway Takeaway Takeaway In-store In-store Takeaway In-store
## [993] In-store Takeaway Takeaway Takeaway Takeaway In-store Takeaway Takeaway
## Levels: In-store Takeaway
## [1] "In-store" "Takeaway"
# Mengubah factor menjadi kode angka
Location_code <- as.numeric(Location_factor)
# Membuat data frame hasil encoding
data_encoded <- data.frame(
Location = tabel2$Location,
code = Location_code
)
# Melihat hasil
head(data_encoded)## Location code
## 1 In-store 1
## 2 Takeaway 2
## 3 Takeaway 2
## 4 Takeaway 2
## 5 Takeaway 2
## 6 In-store 1
Pada transformasi ini, data Location yang kosong dan bernilai UNKNOWN sudah tidak ada setelah dilakukan cleaning data sehingga hanya ada data yang valid yang bisa digunakan. Data tersebut kemudian diubah menjadi factor. Kemudian level kategori ditentukan, lalu kategori Location diubah menjadi kode numerik menggunakan as.numeric().
# One-hot encoding untuk Item
Item_onehot <- model.matrix(~ Item - 1, data = tabel2)
# Melihat hasil
head(Item_onehot)## ItemCake ItemCoffee ItemCookie ItemJuice ItemSalad ItemSandwich ItemSmoothie
## 1 0 1 0 0 0 0 0
## 2 0 0 0 0 0 1 0
## 3 0 1 0 0 0 0 0
## 4 0 0 0 0 1 0 0
## 5 0 0 0 0 0 1 0
## 6 0 0 0 0 0 0 1
## ItemTea
## 1 0
## 2 0
## 3 0
## 4 0
## 5 0
## 6 0
## ItemCake ItemCoffee ItemCookie ItemJuice ItemSalad ItemSandwich ItemSmoothie
## 1 0 1 0 0 0 0 0
## 2 0 0 0 0 0 1 0
## 3 0 1 0 0 0 0 0
## 4 0 0 0 0 1 0 0
## 5 0 0 0 0 0 1 0
## 6 0 0 0 0 0 0 1
## ItemTea
## 1 0
## 2 0
## 3 0
## 4 0
## 5 0
## 6 0
model.matrix() digunakan untuk mengubah kategori Item menjadi beberapa variabel sesuai dengan jumlah itemnya. -1 digunakan agar intercept tidak dibuat sehingga masing-masing kategori menjadi kolom tersendiri.
# One-hot encoding untuk Item
Location_onehot <- model.matrix(~ Location - 1, data = tabel2)
# Melihat hasil
head(Location_onehot)## LocationIn-store LocationTakeaway
## 1 1 0
## 2 0 1
## 3 0 1
## 4 0 1
## 5 0 1
## 6 1 0
## LocationIn-store LocationTakeaway
## 1 1 0
## 2 0 1
## 3 0 1
## 4 0 1
## 5 0 1
## 6 1 0
model.matrix() digunakan untuk mengubah kategori Location menjadi beberapa variabel sesuai dengan jumlah Location. -1 digunakan agar intercept tidak dibuat sehingga masing-masing kategori menjadi kolom tersendiri.
Hasil one-hot encoding berupa nilai 0 dan 1. Nilai 1 menunjukkan bahwa suatu observasi termasuk ke dalam kategori tertentu, sedangkan nilai 0 menunjukkan bahwa observasi tidak termasuk kategori tersebut.
Pada transformasi ini digunakan data hasil cleaning dan dilakukan pemeriksaan struktur data, perubahan tipe data menjadi factor, one-hot encoding menggunakan package fastDummies, serta pembentukan matriks dummy menggunakan model.matrix(). Transformasi ini dilakukan untuk one hot encoding pada dua kategorik yang sudah dipilih yaitu, variabel Item dan Location. Pada variabel Quantity walaupun tidak dilakukan transformasi juga namun tetap dilakukan perubahan menjadi factor.
#Membaca dokumen ke R
setwd("D:\\Documents")
data <- read.csv("Cleaning Data 1.csv", header = TRUE, sep = ";")
head(data)## Transaction.ID Item Quantity Price.Per.Unit Total.Spent Payment.Method
## 1 TXN_2176024 Coffee 5 2.0 10.0 Digital Wallet
## 2 TXN_6327139 Sandwich 4 4.0 16.0 Credit Card
## 3 TXN_5488764 Coffee 4 2.0 8.0 Digital Wallet
## 4 TXN_9530003 Salad 1 5.0 5.0 Digital Wallet
## 5 TXN_3753993 Sandwich 5 4.0 20.0 Credit Card
## 6 TXN_2251128 Smoothie 3 4.0 12.0 Credit Card
## Location X
## 1 In-store NA
## 2 Takeaway NA
## 3 Takeaway NA
## 4 Takeaway NA
## 5 Takeaway NA
## 6 In-store NA
#Menghapus variabel yang tidak digunakan
data$X <- NULL
data$Payment.Method <- NULL
data$Total.Spent <- NULL
data$Price.Per.Unit <- NULL
data$Transaction.ID <- NULL
head(data)## Item Quantity Location
## 1 Coffee 5 In-store
## 2 Sandwich 4 Takeaway
## 3 Coffee 4 Takeaway
## 4 Salad 1 Takeaway
## 5 Sandwich 5 Takeaway
## 6 Smoothie 3 In-store
## [1] "Item" "Quantity" "Location"
## 'data.frame': 1000 obs. of 3 variables:
## $ Item : chr "Coffee" "Sandwich" "Coffee" "Salad" ...
## $ Quantity: int 5 4 4 1 5 3 3 1 3 1 ...
## $ Location: chr "In-store" "Takeaway" "Takeaway" "Takeaway" ...
## [1] 1000 3
##
## Cake Coffee Cookie Juice Salad Sandwich Smoothie Tea
## 138 118 110 114 126 123 136 135
##
## In-store Takeaway
## 300 700
##
## 1 2 3 4 5
## 195 203 179 204 219
#Menjadikan variabel menjadi factor
data$Item <- factor(data$Item)
data$Location <- factor(data$Location)
data$Quantity <- factor(data$Quantity)
str(data)## 'data.frame': 1000 obs. of 3 variables:
## $ Item : Factor w/ 8 levels "Cake","Coffee",..: 2 6 2 5 6 7 5 5 4 2 ...
## $ Quantity: Factor w/ 5 levels "1","2","3","4",..: 5 4 4 1 5 3 3 1 3 1 ...
## $ Location: Factor w/ 2 levels "In-store","Takeaway": 1 2 2 2 2 1 2 2 1 2 ...
## [1] "Cake" "Coffee" "Cookie" "Juice" "Salad" "Sandwich" "Smoothie"
## [8] "Tea"
## [1] "In-store" "Takeaway"
## [1] "1" "2" "3" "4" "5"
## Warning: package 'fastDummies' was built under R version 4.6.1
#One hot encoding Item dan Location
data_onehot <- data
data_onehot <- dummy_cols(
data_onehot,
select_columns = c(
"Item",
"Location"
),
remove_first_dummy = FALSE,
remove_selected_columns = TRUE
)
head(data_onehot)## Quantity Item_Cake Item_Coffee Item_Cookie Item_Juice Item_Salad
## 1 5 0 1 0 0 0
## 2 4 0 0 0 0 0
## 3 4 0 1 0 0 0
## 4 1 0 0 0 0 1
## 5 5 0 0 0 0 0
## 6 3 0 0 0 0 0
## Item_Sandwich Item_Smoothie Item_Tea Location_In-store Location_Takeaway
## 1 0 0 0 1 0
## 2 1 0 0 0 1
## 3 0 0 0 0 1
## 4 0 0 0 0 1
## 5 1 0 0 0 1
## 6 0 1 0 1 0
#One hot encoding Location menggunakan matriks
location_dummy <- model.matrix(
~ Location - 1,
data = data
)
head(location_dummy)## LocationIn-store LocationTakeaway
## 1 1 0
## 2 0 1
## 3 0 1
## 4 0 1
## 5 0 1
## 6 1 0
#One hot encoding menggunakan matriks
item_dummy <- model.matrix(
~ Item - 1,
data = data
)
head(item_dummy)## ItemCake ItemCoffee ItemCookie ItemJuice ItemSalad ItemSandwich ItemSmoothie
## 1 0 1 0 0 0 0 0
## 2 0 0 0 0 0 1 0
## 3 0 1 0 0 0 0 0
## 4 0 0 0 0 1 0 0
## 5 0 0 0 0 0 1 0
## 6 0 0 0 0 0 0 1
## ItemTea
## 1 0
## 2 0
## 3 0
## 4 0
## 5 0
## 6 0
## [1] 1000 3
## [1] 1000 11
## Quantity Item_Cake Item_Coffee Item_Cookie Item_Juice Item_Salad
## 1 5 0 1 0 0 0
## 2 4 0 0 0 0 0
## 3 4 0 1 0 0 0
## 4 1 0 0 0 0 1
## 5 5 0 0 0 0 0
## 6 3 0 0 0 0 0
## Item_Sandwich Item_Smoothie Item_Tea Location_In-store Location_Takeaway
## 1 0 0 0 1 0
## 2 1 0 0 0 1
## 3 0 0 0 0 1
## 4 0 0 0 0 1
## 5 1 0 0 0 1
## 6 0 1 0 1 0
## Item Quantity Location
## 1 Coffee 5 In-store
## 2 Sandwich 4 Takeaway
## 3 Coffee 4 Takeaway
## 4 Salad 1 Takeaway
## 5 Sandwich 5 Takeaway
## 6 Smoothie 3 In-store
## Item Quantity Location
## 0 0 0
## Quantity Item_Cake Item_Coffee Item_Cookie
## 0 0 0 0
## Item_Juice Item_Salad Item_Sandwich Item_Smoothie
## 0 0 0 0
## Item_Tea Location_In-store Location_Takeaway
## 0 0 0
Pada transformasi ini dilakukannya proses one-hot encoding pada variabel Item dan Location untuk mengubah data kategorik menjadi bentuk numerik berupa nilai 0 dan 1. Hasil encoding dapat dilihat menggunakan dummy_cols() maupun model.matrix(). Perbandingan dimensi data sebelum dan sesudah encoding digunakan untuk melihat perubahan jumlah variabel, sedangkan colSums(is.na()) digunakan untuk memastikan keberadaan data kosong sebelum dan sesudah proses encoding.
Berdasarkan seluruh transformasi yang telah dilakuakn dan seluruh hasil yang telah didapatkan, data transaksi kafe yang awalanya terdiri dari 10.000 data kemudian dilakukan pengambilan secara acak sebanyak hingga terambil 1.000 data sampel. Data sampel tersebut masih mengandung berbagai macam permasalahan seperti data kosong, ERROR, dan UNKNOWN, sehingga perlu dilakukan proses cleaning data sebelum pengolahan lebih lanjut. Kemudian, variabel kategorik seperti Item dan Location diolah menggunakan beberapa metode. Pada Kategorik I dilakukan proses factor dan label encoding, yaitu mengubah kategori menjadi kode numerik. Selain itu, dilakukan juga one-hot encoding. Pada Kategorik II dilakukan pengolahan lebih lanjut menggunakan factor, fastDummies, dan model.matrix(). Melalui one-hot encoding, setiap kategori diubah menjadi variabel indikator dengan nilai 0 dan 1. Hasil akhirnya menunjukkan bahwa data kategorik dapat diubah ke dalam bentuk numerik sehingga lebih mudah digunakan dalam proses pengolahan dan analisis statistik menggunakan komputer. Proses encoding tersebut juga merupakan tahap persiapan data agar dapat digunakan untuk analisis selanjutnya.