Laporan ini menggunakan dataset penjualan kopi yang memuat berbagai informasi terkait aktivitas operasional perusahaan dalam periode waktu tertentu. Data yang tersedia mencakup informasi umum seperti waktu transaksi, detail wilayah penjualan, serta karakteristik produk yang dijual. Selain itu, terdapat pula beberapa variabel keuangan yang menggambarkan kinerja perusahaan, baik dari sisi penjualan maupun hasil yang diperoleh lengkap dengan perkiraan biayanya.
Laporan ini menyajikan berbagai analisis terhadap data penjualan kopi dengan fokus pada aspek prediksi, keuntungan, dan kerugian yang dikelompokkan berdasarkan beberapa kategori. Analisis dilakukan untuk memahami pola penjualan dari waktu ke waktu, mengevaluasi keakuratan perencanaan yang telah dibuat, serta mengidentifikasi adanya perbedaan kinerja antar wilayah maupun antar produk.
Selain itu, laporan ini juga bertujuan untuk mengidentifikasi produk yang kurang efisien serta mengevaluasi kontribusi masing-masing produk terhadap keuntungan perusahaan. Pendekatan yang digunakan tidak hanya melihat nilai secara keseluruhan, tetapi juga mempertimbangkan perbandingan antar kategori agar hasil analisis lebih informatif.
Melalui rangkaian analisis tersebut, diharapkan dapat diperoleh gambaran yang lebih jelas mengenai kondisi operasional perusahaan serta faktor-faktor yang memengaruhi kinerja penjualan. Hasil yang diperoleh nantinya diharapkan dapat menjadi bahan pertimbangan dalam pengambilan keputusan, khususnya dalam perencanaan strategi penjualan, pengelolaan biaya, serta evaluasi terhadap produk yang kurang optimal.
readxl pada R
menggunakan fungsi library()library(readxl)
## Warning: package 'readxl' was built under R version 4.5.2
setwd("E:/TUGAS TUGAS/SEMESTER 2/Sistem Informasi Manajemen")
coffee <- read_xlsx("Coffee Chain Datasets.xlsx")
View(coffee)
Dari proses impor file excel ‘Coffee Chain Datasets’, diperoleh sebuah dataset dalam bentuk data frame dengan nama ‘coffee’ yang akan digunakan untuk analisis selanjutnya.
Langkah ini bersifat opsional, namun dapat digunakan untuk membantu memahami struktur dan gambaran umum dari dataset yang digunakan.
str(coffee)
## tibble [4,248 × 20] (S3: tbl_df/tbl/data.frame)
## $ Area Code : num [1:4248] 719 970 970 303 303 720 970 719 970 719 ...
## $ Date : POSIXct[1:4248], format: "2012-01-01" "2012-01-01" ...
## $ Market : chr [1:4248] "Central" "Central" "Central" "Central" ...
## $ Market Size : chr [1:4248] "Major Market" "Major Market" "Major Market" "Major Market" ...
## $ Product : chr [1:4248] "Amaretto" "Colombian" "Decaf Irish Cream" "Green Tea" ...
## $ Product Line : chr [1:4248] "Beans" "Beans" "Beans" "Leaves" ...
## $ Product Type : chr [1:4248] "Coffee" "Coffee" "Coffee" "Tea" ...
## $ State : chr [1:4248] "Colorado" "Colorado" "Colorado" "Colorado" ...
## $ Type : chr [1:4248] "Regular" "Regular" "Decaf" "Regular" ...
## $ Budget COGS : num [1:4248] 90 80 100 30 60 80 140 50 50 40 ...
## $ Budget Margin : num [1:4248] 130 110 140 50 90 130 160 80 70 70 ...
## $ Budget Profit : num [1:4248] 100 80 110 30 70 80 110 20 40 20 ...
## $ Budget Sales : num [1:4248] 220 190 240 80 150 210 300 130 120 110 ...
## $ COGS : num [1:4248] 89 83 95 44 54 72 170 63 60 58 ...
## $ Inventory : num [1:4248] 777 623 821 623 456 ...
## $ Margin : num [1:4248] 130 107 139 56 80 108 171 87 80 72 ...
## $ Marketing : num [1:4248] 24 27 26 14 15 23 47 57 19 22 ...
## $ Profit : num [1:4248] 94 68 101 30 54 53 99 0 33 17 ...
## $ Sales : num [1:4248] 219 190 234 100 134 180 341 150 140 130 ...
## $ Total Expenses: num [1:4248] 36 39 38 26 26 55 72 87 47 55 ...
dim(coffee)
## [1] 4248 20
summary(coffee)
## Area Code Date Market
## Min. :203.0 Min. :2012-01-01 00:00:00 Length:4248
## 1st Qu.:417.0 1st Qu.:2012-06-23 12:00:00 Class :character
## Median :573.0 Median :2012-12-16 12:00:00 Mode :character
## Mean :582.3 Mean :2012-12-15 22:00:00
## 3rd Qu.:772.0 3rd Qu.:2013-06-08 12:00:00
## Max. :985.0 Max. :2013-12-01 00:00:00
## Market Size Product Product Line Product Type
## Length:4248 Length:4248 Length:4248 Length:4248
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## State Type Budget COGS Budget Margin
## Length:4248 Length:4248 Min. : 0.00 Min. :-210.0
## Class :character Class :character 1st Qu.: 30.00 1st Qu.: 50.0
## Mode :character Mode :character Median : 50.00 Median : 70.0
## Mean : 74.83 Mean : 100.8
## 3rd Qu.: 90.00 3rd Qu.: 130.0
## Max. :450.00 Max. : 690.0
## Budget Profit Budget Sales COGS Inventory
## Min. :-320.00 Min. : 0.0 Min. : 0.00 Min. :-3534.0
## 1st Qu.: 20.00 1st Qu.: 80.0 1st Qu.: 43.00 1st Qu.: 432.0
## Median : 40.00 Median : 130.0 Median : 60.00 Median : 619.0
## Mean : 60.91 Mean : 175.6 Mean : 84.43 Mean : 749.4
## 3rd Qu.: 80.00 3rd Qu.: 210.0 3rd Qu.:100.00 3rd Qu.: 910.5
## Max. : 560.00 Max. :1140.0 Max. :364.00 Max. : 8252.0
## Margin Marketing Profit Sales
## Min. :-302.00 Min. : 0.00 Min. :-638.0 Min. : 17
## 1st Qu.: 52.75 1st Qu.: 13.00 1st Qu.: 17.0 1st Qu.:100
## Median : 76.00 Median : 22.00 Median : 40.0 Median :138
## Mean : 104.29 Mean : 31.19 Mean : 61.1 Mean :193
## 3rd Qu.: 132.00 3rd Qu.: 39.00 3rd Qu.: 92.0 3rd Qu.:230
## Max. : 613.00 Max. :156.00 Max. : 778.0 Max. :912
## Total Expenses
## Min. : 10.00
## 1st Qu.: 33.00
## Median : 46.00
## Mean : 54.06
## 3rd Qu.: 65.00
## Max. :190.00
Eksplorasi data dilakukan untuk mengetahui struktur, dimensi, serta ringkasan statistik dari dataset yang digunakan. Informasi ini memberikan gambaran awal mengenai karakteristik data sebelum dilakukan analisis lebih lanjut.
Langkah ini bersifat opsional, namun dapat membantu mengetahui isi dari suatu kolom data tanpa perlu meneliti setiap baris secara manual. Fungsi ini akan secara otomatis menghapus data duplikat sehingga hasil akhir yang dimunculkan akan berupa baris atau data unik dari kolom tersebut.
listunik <- list(unique(coffee$Date),
unique(coffee$Market),
unique(coffee$`Market Size`),
unique(coffee$Product),
unique(coffee$`Product Line`),
unique(coffee$`Product Type`),
unique(coffee$State),
unique(coffee$Type))
str(listunik)
## List of 8
## $ : POSIXct[1:24], format: "2012-01-01" "2012-02-01" ...
## $ : chr [1:4] "Central" "East" "South" "West"
## $ : chr [1:2] "Major Market" "Small Market"
## $ : chr [1:13] "Amaretto" "Colombian" "Decaf Irish Cream" "Green Tea" ...
## $ : chr [1:2] "Beans" "Leaves"
## $ : chr [1:4] "Coffee" "Tea" "Espresso" "Herbal Tea"
## $ : chr [1:20] "Colorado" "Illinois" "Iowa" "Missouri" ...
## $ : chr [1:2] "Regular" "Decaf"
Dalam sintaks tersebut, diambil data unik dari beberapa kolom
kategorikal menggunakan fungsi unique(). Kumpulan kolom
tersebut kemudian disatukan dengan fungsi list() yang
diberi nama ‘listunik’. Setelahnya, dapat dilihat ringkasan berupa tipe,
panjang, serta isi data menggunakan fungsi str().
Analisis ini ditujukan untuk menganalisis tren keuntungan selama periode Januari hingga Desember 2012.
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.2
##
## 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
profit2012 <- coffee %>%
filter(format(Date, "%Y") == "2012") %>%
group_by(Month = format(Date, "%Y-%m")) %>%
summarise(`Monthly Profit` = sum(Profit, na.rm = TRUE)) %>%
ungroup()
View(profit2012)
Data terlebih dahulu difilter untuk mengambil data pada tahun 2012. Selanjutnya, data dikelompokkan berdasarkan bulan dengan tujuan untuk melihat pola keuntungan dalam skala waktu bulanan. Setelah proses pengelompokan, dilakukan perhitungan total keuntungan (profit) pada setiap bulan menggunakan fungsi agregasi.
Hasil dari proses ini adalah sebuah dataset baru yang menyajikan total keuntungan untuk masing-masing bulan selama periode Januari hingga Desember 2012. Dataset ini memberikan gambaran awal mengenai fluktuasi keuntungan yang terjadi sepanjang tahun tersebut.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
ggplot(profit2012, aes(x = as.Date(paste(Month, '-01', sep = ''), format = '%Y-%m-%d'), y = `Monthly Profit`)) +
geom_line(color = "coral") +
geom_point(color = "red") +
theme_minimal() +
labs(title = "Tren Profit Tahun 2012",
x = "Januari 2012 - Desember 2012",
y = "Keuntungan per Bulan") +
theme(axis.text.x = element_text(angle = 45))
Visualisasi yang dihasilkan berupa diagram garis (line chart) yang menggambarkan tren keuntungan bulanan selama tahun 2012. Pemilihan diagram garis didasarkan pada karakteristik data yang bersifat runtun waktu (time series), sehingga memudahkan dalam mengamati pola perubahan nilai dari waktu ke waktu.
Berdasarkan grafik yang ditampilkan, dapat diamati bahwa keuntungan mengalami peningkatan pada beberapa bulan awal tahun, yang kemudian diikuti oleh penurunan pada periode berikutnya sebelum akhirnya cenderung stabil. Pola ini menunjukkan adanya dinamika dalam keuntungan perusahaan.
Coffee_2012 <- coffee %>%
filter(format(Date, "%Y") == "2012") %>%
mutate(Bulan = as.factor(format(Date, "%m")))
Anova_Monthly_Profit <- aov(Profit ~ Bulan, data = Coffee_2012)
summary(Anova_Monthly_Profit)
## Df Sum Sq Mean Sq F value Pr(>F)
## Bulan 11 20619 1874 0.282 0.989
## Residuals 2112 14026343 6641
Untuk mengetahui apakah terdapat perbedaan rata-rata keuntungan yang signifikan antar bulan, dilakukan uji ANOVA satu arah (one-way ANOVA). Uji ini bertujuan untuk membandingkan rata-rata profit pada masing-masing bulan dalam tahun 2012.
Hipotesis yang digunakan dalam pengujian ini adalah sebagai
berikut:
H0: Tidak terdapat perbedaan rata-rata keuntungan yang
signifikan antar bulan pada tahun 2012
H1: Terdapat perbedaan rata-rata keuntungan yang signifikan
antar bulan pada tahun 2012
Hasil uji ANOVA menunjukkan bahwa nilai p-value (Pr(>F)) sebesar 0,989, yang lebih besar dari tingkat signifikansi yang digunakan (alpha = 0,05). Oleh karena itu, H0 gagal ditolak. Hal ini menunjukkan bahwa secara statistik tidak terdapat perbedaan rata-rata keuntungan yang signifikan antar bulan, sehingga variasi keuntungan yang terjadi cenderung tidak berbeda secara nyata sepanjang tahun 2012.
Menggunakan hasil pengelompokan per bulan tahun 2012, maka akan dianalisis bagaimana keakuratan prediksi biaya produksi per bulan di tahun 2012.
Production_Cost <- coffee %>%
filter(format(Date, "%Y") == "2012") %>%
group_by(Month = format(Date, "%Y-%m")) %>%
summarise(
`Total COGS` = sum(COGS, na.rm = TRUE),
`Total Budget COGS` = sum(`Budget COGS`, na.rm = TRUE),
`Difference in Production Cost` = abs(`Total COGS` - `Total Budget COGS`),
`Error Percentage in Production Cost` = round((`Difference in Production Cost` / `Total Budget COGS`) * 100,2)
) %>%
ungroup()
Pada tahap awal, data difilter untuk mengambil data transaksi yang terjadi pada tahun 2012. Selanjutnya, data dikelompokkan berdasarkan bulan dengan tujuan untuk mengamati perbandingan antara biaya produksi aktual dan yang dianggarkan dalam interval waktu bulanan. Pengelompokan ini memudahkan proses perbandingan antara nilai aktual dan nilai yang dianggarkan.
Setelah proses pengelompokan, dilakukan perhitungan beberapa indikator penting, yaitu total COGS aktual, total Budget COGS, selisih antara keduanya, serta persentase error. Total COGS mencerminkan biaya produksi aktual yang dikeluarkan perusahaan, sedangkan Budget COGS merupakan estimasi biaya yang telah direncanakan sebelumnya. Selisih antara kedua nilai tersebut menunjukkan deviasi antara prediksi dan biaya aktual, sementara persentase error digunakan untuk mengukur tingkat ketepatan prediksi.
Dataset ini menjadi dasar untuk mengevaluasi performa perencanaan biaya produksi yang dilakukan perusahaan.
Production_Cost$Accuracy <- ifelse(Production_Cost$`Error Percentage in Production Cost` < 10, "Akurat", ifelse(Production_Cost$`Error Percentage in Production Cost` < 20, "Cukup Akurat", "Tidak Akurat"))
View(Production_Cost)
Persentase error yang dihasilkan pada setiap bulan memberikan gambaran mengenai seberapa jauh nilai aktual menyimpang dari nilai yang telah dianggarkan. Nilai error yang kecil menunjukkan bahwa estimasi yang dilakukan cukup akurat, sedangkan nilai error yang besar menunjukkan adanya perbedaan yang cukup signifikan antara perencanaan dan realisasi. Untuk mempermudah interpretasi hasil analisis, dilakukan klasifikasi terhadap tingkat akurasi prediksi berdasarkan nilai persentase error yang telah dihitung sebelumnya.
Dalam analisis ini, digunakan tiga kategori utama, yaitu “Akurat” untuk nilai error di bawah 10%, “Cukup Akurat” untuk nilai error antara 10% hingga 20%, dan “Tidak Akurat” untuk nilai error di atas 20%. Pemilihan batas 10% sebagai indikator akurasi didasarkan pada praktik umum dalam analisis keuangan, di mana deviasi di bawah 10% sering dianggap masih dalam batas toleransi yang wajar.
Informasi ini memberikan gambaran menyeluruh mengenai kualitas perencanaan biaya produksi yang dilakukan selama tahun 2012.
Menggunakan hasil pengelompokan per bulan tahun 2012, maka akan dianalisis bagaimana keakuratan prediksi pendapatan per bulan di tahun 2012.
Income <- coffee %>%
filter(format(Date, "%Y") == "2012") %>%
group_by(Month = format(Date, "%Y-%m")) %>%
summarise(
`Total Sales` = sum(Sales, na.rm = TRUE),
`Total Budget Sales` = sum(`Budget Sales`, na.rm = TRUE),
`Difference in Income` = abs(`Total Sales` - `Total Budget Sales`),
`Error Percentage in Income Prediction` = round((`Difference in Income` / `Total Budget Sales`) * 100,2)
) %>%
ungroup()
Pada tahap awal, data difilter untuk mengambil data transaksi yang terjadi pada tahun 2012. Selanjutnya, data dikelompokkan berdasarkan bulan. Pengelompokan ini memungkinkan memudahkan perbandingan antara pendapatan aktual dan yang dianggarkan dalam setiap bulan.
Setelah proses pengelompokan, dilakukan perhitungan beberapa indikator penting, yaitu total Sales aktual, total Budget Sales, selisih antara keduanya, serta persentase error. Total Sales mencerminkan pendapatan aktual yang didapatkan perusahaan, sedangkan Budget Sales merupakan estimasi pendapatan. Selisih antara keduanya menunjukkan deviasi antara prediksi dan pendapatan aktual, sementara persentase error digunakan untuk mengukur tingkat ketepatan prediksi.
Dataset ini menjadi dasar untuk mengevaluasi performa perencanaan pendapatan yang dilakukan perusahaan.
Income$Accuracy <- ifelse(Income$`Error Percentage in Income Prediction` < 10, "Akurat", ifelse(Income$`Error Percentage in Income Prediction` < 20, "Cukup Akurat", "Tidak Akurat"))
View(Income)
Persentase error yang dihasilkan pada setiap bulan memberikan gambaran mengenai seberapa jauh nilai aktual menyimpang dari nilai yang telah dianggarkan. Nilai error yang kecil menunjukkan bahwa estimasi yang dilakukan cukup akurat, sedangkan nilai error yang besar mengindikasikan adanya ketidaksesuaian antara perencanaan dan realisasi pendapatan. Untuk mempermudah interpretasi hasil analisis, maka dilakukan klasifikasi terhadap tingkat akurasi prediksi berdasarkan nilai persentase error yang telah dihitung sebelumnya.
Dalam analisis ini, digunakan tiga kategori utama, yaitu “Akurat” untuk nilai error di bawah 10%, “Cukup Akurat” untuk nilai error antara 10% hingga 20%, dan “Tidak Akurat” untuk nilai error di atas 20%. Pemilihan batas 10% sebagai indikator akurasi didasarkan pada praktik umum dalam analisis keuangan, di mana error di bawah 10% sering dianggap masih dalam batas toleransi yang wajar.
Informasi ini memberikan gambaran menyeluruh mengenai kualitas perencanaan pendapatan yang dilakukan selama tahun 2012.
Analisis ini ditujukan untuk melihat persebaran kerugian dan keuntungan pada tiap daerah.
State_Analysis <- coffee %>%
group_by(State, Product) %>%
summarise(`Product Sales per State` = sum(Sales, na.rm = TRUE),
`Product Profit per State` = sum(Profit, na.rm = TRUE)) %>%
ungroup()
## `summarise()` has grouped output by 'State'. You can override using the
## `.groups` argument.
Data dikelompokkan berdasarkan negara bagian (state) dan jenis produk(product) untuk menghitung total penjualan (sales) dan total keuntungan (profit) pada masing-masing kombinasi tersebut.
Hasil pengelompokan ini memberikan gambaran mengenai kontribusi setiap produk di tiap negara bagian, sehingga dapat digunakan untuk membandingkan kinerja penjualan dan keuntungan antar produk maupun antar wilayah.
State_Analysis$Status <- ifelse(State_Analysis$`Product Profit per State` < 0, "Rugi", "Untung")
Selanjutnya dilakukan klasifikasi terhadap setiap produk di tiap negara bagian berdasarkan nilai keuntungan yang diperoleh untuk melihat mana produk yang menguntungkan dan mana produk yang merugikan.
Produk dengan nilai profit kurang dari nol dikategorikan sebagai “Rugi”. Artinya, produk tersebut cenderung menimbulkan kerugian pada negara bagiannya. Sedangkan produk dengan profit lebih dari nol dikategorikan sebagai “Untung”. Artinya, produk tersebut pada sejumlah negara bagian cenderung membawa untung bagi perusahaan.
Klasifikasi ini bertujuan untuk mempermudah identifikasi produk-produk yang memberikan kerugian maupun keuntungan pada masing-masing negara bagian.
State_Analysis$Percentage <- round((State_Analysis$`Product Profit per State` / State_Analysis$`Product Sales per State`) * 100, 2)
View(State_Analysis)
Selain mengetahui status keuntungan, dihitung juga persentase profit terhadap penjualan untuk setiap produk di tiap negara bagian. Nilai ini diperoleh dari perbandingan antara profit dan sales, yang kemudian dinyatakan dalam bentuk persentase.
Persentase ini memberikan gambaran tingkat profitabilitas, sehingga memudahkan dalam membandingkan kinerja produk secara relatif, tidak hanya berdasarkan nilai absolut.
Detrimental <- State_Analysis %>%
filter(Status == "Rugi") %>%
select(State, Product, Percentage) %>%
ungroup()
View(Detrimental)
Beneficial <- State_Analysis %>%
filter(Status == "Untung") %>%
select(State, Product, Percentage) %>%
ungroup()
View(Beneficial)
Untuk mempermudah analisis, data kemudian dipisahkan menjadi dua kelompok, yaitu produk yang mengalami kerugian dan produk yang menghasilkan keuntungan. Pemisahan ini dilakukan dengan melakukan penyaringan berdasarkan status yang telah ditentukan sebelumnya.
Dengan adanya pemisahan ini, proses identifikasi produk yang merugikan maupun menguntungkan menjadi lebih efisien, sehingga memudahkan analisis lanjutan tanpa harus menelusuri seluruh data secara manual.
Anova_State_Profit <- aov(Profit ~ State, data = coffee)
summary(Anova_State_Profit)
## Df Sum Sq Mean Sq F value Pr(>F)
## State 19 5550662 292140 32.18 <2e-16 ***
## Residuals 4228 38382975 9078
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Uji hipotesis menggunakan metode ANOVA dilakukan untuk melihat apakah
terdapat perbedaan rata-rata keuntungan antar negara bagian. Hipotesis
yang digunakan adalah:
H0: Tidak terdapat perbedaan rata-rata keuntungan pada tiap
negara bagian
H1: Terdapat paling tidak satu perbedaan rata-rata keuntungan
pada tiap negara bagian
Hasil uji ANOVA menunjukkan nilai p-value yang sangat kecil (mendekati
nol, yaitu 2 x 10-16 atau 2e-16). Dengan alpha = 0.05, karena
nilai p-value lebih kecil dari alpha, maka H0 ditolak. Hal
ini berarti terdapat paling tidak satu perbedaan rata-rata
profit antar negara bagian.
`Average per State` <- coffee %>%
group_by(State) %>%
summarise(`Mean of Profit` = mean(Profit, na.rm = TRUE))
ggplot(`Average per State`, aes(x = State, y = `Mean of Profit`)) +
geom_bar(stat = "identity", fill = "chocolate2") +
theme_minimal() +
labs(title = "Rata-rata Profit per State",
x = "State",
y = "Rata-rata Profit") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Untuk mendukung hasil uji hipotesis sebelumnya, dibuat visualisasi dalam bentuk diagram batang atau bar chart guna memperlihatkan rata-rata keuntungan pada tiap negara bagian.
Grafik tersebut menampilkan nama negara bagian pada sumbu x dan nilai rata-rata profit pada sumbu y. Dari visualisasi ini, dapat dilihat perbandingan antar negara bagian, sehingga lebih mudah mengidentifikasi mana yang memiliki rata-rata keuntungan tinggi maupun rendah.
ggplot(coffee, aes(x = State, y = Profit)) +
geom_boxplot() +
theme_minimal() +
labs(title = "Distribusi Profit per State",
x = "State",
y = "Profit") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Selain menggunakan diagram batang, visualisasi dalam bentuk boxplot juga digunakan untuk melihat distribusi keuntungan pada tiap negara bagian.
Pada grafik ini, sumbu x menunjukkan negara bagian, sedangkan sumbu y menunjukkan nilai profit. Boxplot tidak hanya menampilkan rata-rata, tetapi juga sebaran data seperti median, kuartil, serta nilai ekstrem (outlier).
Dengan demikian, boxplot memberikan gambaran yang lebih lengkap mengenai variasi keuntungan di tiap negara bagian, karena data yang ditampilkan berasal dari seluruh observasi (misalnya per produk, tanggal, dan lainnya), bukan hanya nilai rata-ratanya saja.
Analisis ini dilakukan untuk mengidentifikasi produk mana saja yang inefisien berdasarkan tingkat penjualan dan profitabilitasnya.
Sales per Product >
mean(Sales per Product)) dan profitabilitas tinggi atau
rendah (rendah: Profitability < 10%).Product_Analysis <- coffee %>%
group_by(Product) %>%
summarise(`Sales per Product` = sum(Sales, na.rm = TRUE),
`Profit per Product` = sum(Profit, na.rm = TRUE)) %>%
ungroup()
View(Product_Analysis)
Data dikelompokkan berdasarkan jenis produk untuk menghitung total penjualan dan total keuntungan pada masing-masing produk. Hasil pengelompokan ini memberikan gambaran mengenai kontribusi setiap produk terhadap pendapatan dan keuntungan perusahaan.
Product_Analysis$Profitability <- round((Product_Analysis$`Profit per Product` / Product_Analysis$`Sales per Product`) * 100,2)
Dari sintaks tersebut, kita dapat menghitung profitabilitas tiap produk, yaitu perbandingan antara profit dan sales dalam bentuk persentase. Nilai ini digunakan untuk melihat seberapa besar keuntungan yang dihasilkan dari setiap penjualan. Hasil dari perhitungan tersebut kemudian dibulatkan menjadi 2 angka di belakang koma agar lebih mudah dibaca.
Product_Analysis$`Sales' Average` <- ifelse(Product_Analysis$`Sales per Product` > mean(Product_Analysis$`Sales per Product`, na.rm = TRUE), "Di atas rata-rata", "Di bawah rata-rata")
Product_Analysis$`Profitability Status` <- ifelse(Product_Analysis$Profitability < 10, "Rendah", "Tinggi")
Produk kemudian dikategorikan berdasarkan tingkat penjualan (di atas atau di bawah rata-rata) serta tingkat profitabilitas (tinggi atau rendah). Pengelompokan ini dilakukan untuk mempermudah dalam melihat perbedaan kinerja antar produk.
Produk yang inefisien adalah produk yang memiliki pendapatan di atas rata-rata serta profitabilitas rendah. Dari hasil kategori produk tersebut, kita dapat lebih mudah mengamati apakah suatu produk itu inefisien dilihat dari perbandingan dua kategori tersebut.
Product_Analysis$Inefficiency <- ifelse(Product_Analysis$`Sales' Average` == "Di atas rata-rata" & Product_Analysis$`Profitability Status` == "Rendah", "Iya", "Tidak")
Berdasarkan kategori tersebut, ditentukan produk yang termasuk inefisien, yaitu produk dengan penjualan di atas rata-rata namun memiliki profitabilitas rendah. Kondisi ini menunjukkan bahwa meskipun produk tersebut banyak terjual, keuntungan yang dihasilkan relatif kecil.
Penambahan kolom klasifikasi ini mempermudah dalam mengidentifikasi produk yang kurang optimal tanpa perlu memeriksa data secara manual. Namun, perlu diperhatikan bahwa produk yang tidak termasuk inefisien belum tentu sepenuhnya efisien, karena bisa saja produk tersebut memiliki penjualan rendah meskipun profitabilitasnya tinggi, atau sebaliknya.
Oleh karena itu, hasil analisis ini lebih difokuskan untuk menyoroti produk-produk yang berpotensi menjadi masalah, sehingga dapat menjadi bahan pertimbangan dalam evaluasi strategi penjualan maupun penentuan kebijakan ke depan.