Pada bisnis ritel, kemampuan dalam menganalisis data penjualan dapat mendukung proses pengambilan keputusan yang tepat guna mengoptimalkan kinerja bisnis. Analisis tersebut kemudian disusun dalam sebuah laporan hasil analisis penjualan yang memuat berbagai informasi, seperti identifikasi produk, evaluasi performa penjualan tiap produk, pola pembelian konsumen, performa cabang, dan variabel pendukung evaluasi lainnnya. Melalui laporan hasil analisis penjualan, para pelaku usaha dapat memperoleh gambaran mengenai kondisi bisnis yang sedang dijalankan. Selanjutanya, informasi tersebut dapat digunakan sebagai dasar dalam menentukan strategi untuk mengoptimalkan kinerja demi meningkatkan daya saing dan keberlanjutan bisnis.
Laporan ini disusun berdasarkan hasil analisis terhadap dataset Coffee Chain untuk mengidentifikasi profit yang dihasilkan setiap cabang, menganalisis hubungan antara variabel penjualan (Sales), pemasaran (Marketing), dan keuntungan (Profit), serta membandingkan kinerja cabang dengan profit tertinggi dan terendah. Hasil analisis diharapkan dapat memberikan gambaran terkait kondisi bisnis saat ini dan menjadi dasar dalam pengambilan keputusan yang tepat.
Dataset yang digunakan adalah data Coffee Chain Datasets dalam format .xlsx yang dapat diakses melalui laman SPADA UNS. Dataset tersebut kemudian diimport ke R-Studio menggunakan library(readxl) dan fungsi read_excel().
Coffee Chain Datasets memuat informasi terkait jaringan bisnis kedai kopi yang terkandung dalam variabel berikut: Area Code, Date, Market, Market Size, Product, Product Line, Product Type, State, Type, Budget COGS, Budget Margin, Budget Profit, Budget Sales, COGS, Inventory, Margin, Marketing, Profit, Sales, Total Expenses. Variabel yang digunakan dalam analisis yaitu: Product, State, Sales, Margin, Marketing, dan Profit.
library(readxl)
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
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
# Import data
CoffeeChain <- read_excel("Data Coffee Chain.xlsx")
# Eksplorasi data: cek struktur data dan missing value
str(CoffeeChain)
## 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 ...
colSums(is.na(CoffeeChain))
## Area Code Date Market Market Size Product
## 0 0 0 0 0
## Product Line Product Type State Type Budget COGS
## 0 0 0 0 0
## Budget Margin Budget Profit Budget Sales COGS Inventory
## 0 0 0 0 0
## Margin Marketing Profit Sales Total Expenses
## 0 0 0 0 0
Seluruh data bertipe numerik, posixct, dan karakter, serta tidak ditemukan missing value di dalamnya, sehingga siap untuk dilakukan analisis lebih lanjut.
Pada analisis ini, dilakukan perhitungan total keuntungan (Profit) yang didapat dari hasil penjualan di cabang-cabang kedai kopi berdasarkan variabel wilayah (State). Dengan mengetahui distribusi profit antar cabang, kita dapat mengidentifikasi kinerja dari setiap cabang. Cabang dengan kinerja terbaik akan dijadikan sebagai acuan dalam pengembangan strategi bisnis sebagai langkah evaluasi terhadap cabang dengan kinerja terburuk. Analisis dilakukan dengan menggunakan variabel State dan Profit.
# Total profit dari yang terbesar
ProfitState <- CoffeeChain %>%
group_by(State) %>%
summarise(TotalProfit = sum(Profit, na.rm = TRUE)) %>%
arrange(desc(TotalProfit))
ProfitState
## # A tibble: 20 × 2
## State TotalProfit
## <chr> <dbl>
## 1 California 31785
## 2 Illinois 30821
## 3 Iowa 22212
## 4 New York 20096
## 5 Colorado 17743
## 6 Massachusetts 16442
## 7 Texas 15766
## 8 Oregon 12439
## 9 Florida 12310
## 10 Washington 11405
## 11 Ohio 10773
## 12 Nevada 10616
## 13 Wisconsin 8702
## 14 Oklahoma 8558
## 15 Utah 7751
## 16 Connecticut 7621
## 17 Louisiana 7355
## 18 Missouri 3601
## 19 New Hampshire 2748
## 20 New Mexico 799
ggplot(ProfitState, aes(x = reorder(State, TotalProfit),
y = TotalProfit,
fill = TotalProfit)) +
geom_bar(stat = "identity") +
coord_flip() +
theme_minimal() +
scale_fill_gradient(low = '#FF0000', high ='#008000') +
labs(title = "Total Profit per State",
x = "State",
y = "Total Profit")
Berdasarkan hasil agregasi data dan visualisasi bar chart “Total Profit per State”, diketahui terdapat perbedaan pada total keuntungan (Profit) antar wilayah (State) sebagai representasi cabang kedai kopi. State dengan nilai profit tertinggi menunjukkan kontribusi besar terhadap total keuntungan jaringan bisnis kedai kopi. Artinya, cabang tersebut memiliki performa bisnis yang sangat baik, bisa karena didukung oleh tingginya tingkat penjualan (Sales), produk unggulan, maupun strategi pemasaran (Marketing) yang efektif. Sebaliknya, state dengan nilai profit terendah menunjukkan peforma bisnis yang kurang optimal. Hal tersebut dapat mengindikasi adanya permasalahan dalam penjualan, bisa karena rendahnya tingkat penjualan ataupun kurang efektifnya strategi pemasaran (Marketing) yang dijalankan.Selain itu, perbedaan profit antar state juga dapat dipengaruhi oleh faktor eksternal, seperti kondisi pasar di masing-masing wilayah, preferensi konsumen, dan tingkat persaingan.
Analisis terhadap data dari cabang dengan profit tertinggi bertujuan untuk mengidentifikasi faktor pendukung tingginya profit sehingga dapat dijadikan sebagai acuan bagi cabang lainnya. Analisis dilakukan dengan menggunakan variabel State, Profit, Sales, Marketing, dan Product.
# Menampilkan State dengan Profit Tertinggi
StateHigh <- ProfitState$State[1]
StateHigh
## [1] "California"
# Menampilkan keseluruhan data berdasarkan State dengan Profit tertinggi
DataHigh <- CoffeeChain %>%
filter(State == StateHigh)
DataHigh
## # A tibble: 288 × 20
## `Area Code` Date Market `Market Size` Product `Product Line`
## <dbl> <dttm> <chr> <chr> <chr> <chr>
## 1 661 2012-01-01 00:00:00 West Major Market Caffe La… Beans
## 2 818 2012-01-01 00:00:00 West Major Market Caffe Mo… Beans
## 3 213 2012-01-01 00:00:00 West Major Market Decaf Es… Beans
## 4 510 2012-01-01 00:00:00 West Major Market Chamomile Leaves
## 5 310 2012-01-01 00:00:00 West Major Market Lemon Leaves
## 6 707 2012-01-01 00:00:00 West Major Market Mint Leaves
## 7 619 2012-01-01 00:00:00 West Major Market Darjeeli… Leaves
## 8 650 2012-01-01 00:00:00 West Major Market Earl Grey Leaves
## 9 760 2012-01-01 00:00:00 West Major Market Green Tea Leaves
## 10 916 2012-01-01 00:00:00 West Major Market Amaretto Beans
## # ℹ 278 more rows
## # ℹ 14 more variables: `Product Type` <chr>, State <chr>, Type <chr>,
## # `Budget COGS` <dbl>, `Budget Margin` <dbl>, `Budget Profit` <dbl>,
## # `Budget Sales` <dbl>, COGS <dbl>, Inventory <dbl>, Margin <dbl>,
## # Marketing <dbl>, Profit <dbl>, Sales <dbl>, `Total Expenses` <dbl>
ProductHigh <- DataHigh %>%
group_by(Product) %>%
summarise(
TotalSales = sum(Sales),
TotalProfit = sum(Profit),
TotalMarketing = sum(Marketing)) %>%
arrange(desc(TotalProfit))
ProductHigh
## # A tibble: 12 × 4
## Product TotalSales TotalProfit TotalMarketing
## <chr> <dbl> <dbl> <dbl>
## 1 Colombian 18245 8566 2490
## 2 Decaf Espresso 14607 6580 2016
## 3 Lemon 12681 5450 1754
## 4 Caffe Latte 12001 4497 1628
## 5 Darjeeling 6507 3418 716
## 6 Chamomile 6233 3252 688
## 7 Earl Grey 4640 2334 512
## 8 Mint 3807 1555 526
## 9 Green Tea 4027 1355 504
## 10 Caffe Mocha 7691 886 2856
## 11 Amaretto 2714 -2217 946
## 12 Decaf Irish Cream 3739 -3891 1426
par(mfrow = c(1,2))
ggplot(DataHigh, aes(x = Marketing, y = Sales)) +
geom_point(color = "#0041c2", size = 1) +
theme_minimal() +
labs(title = paste("Marketing vs Sales -", StateHigh))
ggplot(DataHigh, aes(x = Sales, y = Profit)) +
geom_point(color = "forestgreen", size = 1) +
theme_minimal() +
labs(title = paste("Sales vs Profit -", StateHigh))
Berdasarkan hasil analisis pada cabang dengan profit tertinggi menggunakan scatter plot “Marketing vs Sales”, diketahui bahwa terdapat hubungan positif antara Marketing dan Sales, peningkatan biaya pemasaran (Marketing) mempengaruhi peningkatan angka penjualan (Sales). Walau terdapat beberapa strategi pemasaran dengan biaya yang cukup tinggi namun angka penjualan yang dihasilkan tidak semaksimal strategi pemasaran dengan biaya yang lebih rendah, tetapi angka penjualan tersebut tetap mampu mengasilkan keuntungtungan bagi cabang tersebut. Selain itu, scatter plot “Sales vs Profit” juga menunjukkan adanya hubungan positif antara angka penjualan (Sales) dengan keuntungan (Profit), semakin besar angka penjualan maka semakin besar pula keuntungan yang didapatkan. Dengan demikian, diketahui bahwa cabang California memiliki strategi pemasaran yang efektif serta mampu mengoptimalkan konversi angka penjualan menjadi keuntungan.
Berdasarkan analisis produk, pada cabang California terdapat beberapa produk (Product) yang memberikan kontribusi besar terhadap keuntungan cabang, seperti Colombian, Decaf Espresso, Lemon, Caffe Latte, dan Darjeeling. Produk-produk tersebut dapat dikatakan sebagai produk unggulan (high performing product).
Analisis terhadap data dari cabang dengan profit terendah bertujuan untuk mengidentifikasi faktor penyebab rendahnya profit yang merujuk pada rendahnya kinerja cabang tersebut, sehingga dapat dilakukan pengambilan langkah evaluasi yang tepat guna meningkatkan performa bisnis di cabang tersebut. Analisis dilakukan dengan menggunakan variabel State, Profit, Sales, Marketing, dan Product.
# Menampilkan state dengan profit terendah
StateLow <- ProfitState$State[nrow(ProfitState)]
StateLow
## [1] "New Mexico"
# Menampilkan keseluruhan data berdasarkan state dengan profit terendah
DataLow <- CoffeeChain %>%
filter(State == StateLow)
DataLow
## # A tibble: 168 × 20
## `Area Code` Date Market `Market Size` Product `Product Line`
## <dbl> <dttm> <chr> <chr> <chr> <chr>
## 1 505 2012-01-01 00:00:00 South Small Market Caffe Mo… Beans
## 2 505 2012-01-01 00:00:00 South Small Market Decaf Es… Beans
## 3 505 2012-01-01 00:00:00 South Small Market Chamomile Leaves
## 4 505 2012-01-01 00:00:00 South Small Market Lemon Leaves
## 5 505 2012-01-01 00:00:00 South Small Market Caffe La… Beans
## 6 505 2012-01-01 00:00:00 South Small Market Colombian Beans
## 7 505 2012-01-01 00:00:00 South Small Market Decaf Ir… Beans
## 8 505 2012-02-01 00:00:00 South Small Market Caffe Mo… Beans
## 9 505 2012-02-01 00:00:00 South Small Market Decaf Es… Beans
## 10 505 2012-02-01 00:00:00 South Small Market Chamomile Leaves
## # ℹ 158 more rows
## # ℹ 14 more variables: `Product Type` <chr>, State <chr>, Type <chr>,
## # `Budget COGS` <dbl>, `Budget Margin` <dbl>, `Budget Profit` <dbl>,
## # `Budget Sales` <dbl>, COGS <dbl>, Inventory <dbl>, Margin <dbl>,
## # Marketing <dbl>, Profit <dbl>, Sales <dbl>, `Total Expenses` <dbl>
ProductLow <- DataLow %>%
group_by(Product) %>%
summarise(
TotalSales = sum(Sales),
TotalProfit = sum(Profit),
TotalMarketing = sum(Marketing)
) %>%
arrange(desc(TotalProfit))
ProductLow
## # A tibble: 7 × 4
## Product TotalSales TotalProfit TotalMarketing
## <chr> <dbl> <dbl> <dbl>
## 1 Colombian 3204 903 400
## 2 Chamomile 1209 376 126
## 3 Decaf Espresso 2220 369 290
## 4 Lemon 1683 201 216
## 5 Caffe Mocha 2793 -160 1028
## 6 Caffe Latte 1657 -207 266
## 7 Decaf Irish Cream 3126 -683 716
par(mfrow = c(1,2))
ggplot(DataLow, aes(x = Marketing, y = Sales)) +
geom_point(color = "#0041c2", size = 1) +
theme_minimal() +
labs(title = paste("Marketing vs Sales-", StateHigh))
ggplot(DataLow, aes(x = Sales, y = Profit)) +
geom_point(color = "forestgreen", size = 1) +
theme_minimal() +
labs(title = paste("Sales vs Profit -", StateHigh))
Berdasarkan hasil analisis, cabang dengan profit terendah menunjukkan angka penjualan yang lebih rendah dibandingkan cabang dengan profit tertinggi. Scatter plot “Marketing vs Sales” menunjukkan bahwa biaya pemasaran belum mampu meningkatkan angka penjualan secara optimal. Pada scatter plot “Sales vs Profit” memnujukkan bahwa peningkatan angka penjualan belum sepenuhnya diikuti oleh peningkatan keuntungan yang didapatkan cabang. Hal ini dapat disebabkan oleh kurang efisiennya strategi pemasaran maupun tingginya biaya operasional cabang.
Berdasarkan analisis produk, pada cabang New Mexico terdapat beberapa produk (Product) yang memberikan kontribusi terhadap keuntungan cabang, seperti Colombian, Chamomile, decaf Espresso, dan Lemon. Namun, produk-produk lain menunjukkan angka minus pada profit. Dengan demikian, diketahui bahwa cabang New Mexico memiliki strategi pemasaran yang kurang efektif serta belum mampu mengoptimalkan konversi angka penjualan menjadi keuntungan.
Analisis perbandingan ini bertujuan untuk mengidentifikasi perbedaan faktor utama yang memepengaruhi kinerja masing-masing cabang. Melalui analisis ini, kita dapat merumuskan strategi peningkatan performa yang tepat bagi cabang dengan kinerja rendah. Analisis dilakukan dengan menggunakan variabel State, Profit, dan Margin.
# Analisis perbandingan profit
PerbandinganProfit <- data.frame(
State = c(StateHigh, StateLow),
Profit = c(sum(DataHigh$Profit),
sum(DataLow$Profit)))
PerbandinganProfit
## State Profit
## 1 California 31785
## 2 New Mexico 799
# Analisis perbandingan margin
PerbandinganMargin <- data.frame(
State = c(StateHigh, StateLow),
Margin = c(mean(DataHigh$Profit/DataHigh$Sales, na.rm = TRUE),
mean(DataLow$Profit/DataLow$Sales, na.rm = TRUE)))
PerbandinganMargin
## State Margin
## 1 California 0.17849251
## 2 New Mexico 0.05998773
# Membuat kategori
PerbandinganProfit$KategoriProfit <- ifelse(
PerbandinganProfit$Profit == max(PerbandinganProfit$Profit), "Tinggi", "Rendah")
PerbandinganMargin$KategoriMargin <- ifelse(
PerbandinganMargin$Margin == max(PerbandinganMargin$Margin), "Tinggi", "Rendah")
# Visualisasi
par(mfrow = c(1,2))
ggplot(PerbandinganProfit, aes(x = State,
y = Profit,
fill = KategoriProfit)) +
geom_bar(stat = "identity") +
scale_fill_manual(values = c("Tinggi" = "#008000",
"Rendah" = "#FF0000")) +
theme_minimal() +
labs(title = "Perbandingan Profit")
ggplot(PerbandinganMargin, aes(x = State,
y = Margin,
fill = KategoriMargin)) +
geom_bar(stat = "identity") +
scale_fill_manual(values = c("Tinggi" = "#008000",
"Rendah" = "#FF0000")) +
theme_minimal() +
labs(title = "Perbandingan Margin")
Berdasarkan hasil perbandingan, dapat diketahui bahwa cabang dengan profit tertinggi memiliki nilai margin yang lebih besar dibandingkan cabang dengan profit terendah. Hal ini menunjukkann bahwa cabang California tidak hanya unggul dalam strategi pemasaran dan angka penjualan, melainkan juga unggul dalam mengelola biaya operasional sehingga mampu menghasilkan keuntungan yang lebih optimal. Sebaliknya, cabang dengan profit terendah, yaitu New Mexico, memiliki nilai margin yang lebih kecil. Hal ini menunjukkan adanya ketidakefisienan dalam operasional atau tingginya biaya yang dikeluarkan dibandingkan dengan pendapatan yang diterima.