data <- read_excel("Data_Warung_Kelontong.xlsx", skip = 2)
# Bersihkan data
data <- data %>%
filter(!is.na(No), No != "TOTAL") %>%
mutate(
Harga_Beli = as.numeric(Harga_Beli),
Harga_Jual = as.numeric(Harga_Jual),
Jumlah_Terjual = as.numeric(Jumlah_Terjual),
Total_Pendapatan = as.numeric(Total_Pendapatan),
Total_Modal = as.numeric(Total_Modal),
Laba_Rugi = as.numeric(Laba_Rugi),
Status = as.character(Status)
) %>%
filter(!is.na(Laba_Rugi), !is.na(Status))
cat("Jumlah data:", nrow(data), "\n")
## Jumlah data: 50
head(data)
## # A tibble: 6 × 11
## No Nama_Produk Kategori Metode_Pembayaran Harga_Beli Harga_Jual
## <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 1 Beras 1kg Kebutuhan Dapur Tunai 11000 14000
## 2 2 Roti Tawar Makanan Tunai 9000 12000
## 3 3 Kopi Kapal Api Minuman Tunai 1500 2000
## 4 4 Indomie Kuah Makanan Transfer 2800 3500
## 5 5 Roti Tawar Makanan QRIS 9000 12000
## 6 6 Sabun Lifebuoy Kebutuhan Rumah Tunai 3500 2834
## # ℹ 5 more variables: Jumlah_Terjual <dbl>, Total_Pendapatan <dbl>,
## # Total_Modal <dbl>, Laba_Rugi <dbl>, Status <chr>
| Variabel | Tipe | Keterangan |
|---|---|---|
| Kategori | Kategorik | Jenis produk (Makanan, Minuman, Snack, dll) |
| Status | Kategorik | Untung / Rugi / BEP |
| Harga Jual | Numerik | Harga jual per produk (Rp) |
| Laba/Rugi | Numerik | Selisih pendapatan dan modal (Rp) |
modus <- function(x) { names(sort(table(x), decreasing=TRUE))[1] }
cat("======= HARGA JUAL =======\n")
## ======= HARGA JUAL =======
cat("Mean :", mean(data$Harga_Jual, na.rm=TRUE), "\n")
## Mean : 8217.7
cat("Median :", median(data$Harga_Jual, na.rm=TRUE), "\n")
## Median : 8000
cat("Modus :", modus(data$Harga_Jual), "\n")
## Modus : 8000
cat("Q1 :", quantile(data$Harga_Jual, 0.25, na.rm=TRUE), "\n")
## Q1 : 4000
cat("Q3 :", quantile(data$Harga_Jual, 0.75, na.rm=TRUE), "\n")
## Q3 : 12000
cat("Range :", diff(range(data$Harga_Jual, na.rm=TRUE)), "\n")
## Range : 18342
cat("Varians :", var(data$Harga_Jual, na.rm=TRUE), "\n")
## Varians : 25845974
cat("Standar Deviasi :", sd(data$Harga_Jual, na.rm=TRUE), "\n")
## Standar Deviasi : 5083.894
cat("\n======= LABA/RUGI =======\n")
##
## ======= LABA/RUGI =======
cat("Mean :", mean(data$Laba_Rugi, na.rm=TRUE), "\n")
## Mean : 8724.42
cat("Median :", median(data$Laba_Rugi, na.rm=TRUE), "\n")
## Median : 7000
cat("Modus :", modus(data$Laba_Rugi), "\n")
## Modus : 9000
cat("Q1 :", quantile(data$Laba_Rugi, 0.25, na.rm=TRUE), "\n")
## Q1 : 1500
cat("Q3 :", quantile(data$Laba_Rugi, 0.75, na.rm=TRUE), "\n")
## Q3 : 13125
cat("Range :", diff(range(data$Laba_Rugi, na.rm=TRUE)), "\n")
## Range : 48906
cat("Varians :", var(data$Laba_Rugi, na.rm=TRUE), "\n")
## Varians : 120401005
cat("Standar Deviasi :", sd(data$Laba_Rugi, na.rm=TRUE), "\n")
## Standar Deviasi : 10972.74
cat("\n======= KATEGORIK =======\n")
##
## ======= KATEGORIK =======
cat("Modus Kategori :", modus(data$Kategori), "\n")
## Modus Kategori : Kebutuhan Dapur
cat("Modus Status :", modus(data$Status), "\n")
## Modus Status : Untung
status_count <- data %>%
count(Status) %>%
mutate(persen = round(n/sum(n)*100, 1),
label = paste0(Status, "\n", persen, "%"))
ggplot(status_count, aes(x = "", y = n, fill = Status)) +
geom_bar(stat = "identity", width = 1, color = "white") +
coord_polar("y") +
geom_text(aes(label = label), position = position_stack(vjust = 0.5), size = 4) +
scale_fill_manual(values = c("Untung" = "#70AD47", "Rugi" = "#FF4444", "BEP" = "#FFC000")) +
labs(title = "Pie Chart - Proporsi Status Transaksi") +
theme_void() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 13))
Interpretasi: Diagram pie memperlihatkan perbandingan jumlah transaksi yang menghasilkan keuntungan, kerugian, dan kondisi impas (BEP). Jika bagian berwarna hijau lebih besar dibandingkan bagian lainnya, maka dapat disimpulkan bahwa sebagian besar transaksi di warung memberikan keuntungan bagi pemilik usaha.
laba_kat <- data %>%
group_by(Kategori) %>%
summarise(Total_Laba = sum(Laba_Rugi, na.rm=TRUE))
ggplot(laba_kat, aes(x = reorder(Kategori, Total_Laba), y = Total_Laba, fill = Total_Laba > 0)) +
geom_bar(stat = "identity") +
coord_flip() +
scale_fill_manual(values = c("TRUE" = "#70AD47", "FALSE" = "#FF4444"),
labels = c("Rugi", "Untung")) +
labs(title = "Bar Chart - Total Laba/Rugi per Kategori Produk",
x = "Kategori", y = "Total Laba/Rugi (Rp)", fill = "Status") +
scale_y_continuous(labels = scales::comma) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold"))
Interpretasi: Grafik batang menunjukkan total laba atau kerugian yang diperoleh dari setiap kategori produk. Kategori dengan batang yang lebih tinggi menunjukkan kontribusi keuntungan yang lebih besar. Sebaliknya, apabila terdapat batang yang berada pada nilai negatif, maka kategori tersebut mengalami kerugian.
ggplot(data, aes(x = Laba_Rugi)) +
geom_histogram(bins = 15, fill = "steelblue", color = "white") +
geom_vline(xintercept = 0, color = "red", linetype = "dashed", linewidth = 1) +
labs(title = "Histogram - Distribusi Laba/Rugi per Transaksi",
x = "Laba/Rugi (Rp)", y = "Frekuensi",
caption = "Garis merah = titik BEP (0)") +
scale_x_continuous(labels = scales::comma) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold"))
Interpretasi: Histogram menggambarkan distribusi nilai laba atau rugi dari setiap transaksi yang terjadi. Nilai yang berada di sebelah kanan garis merah menunjukkan transaksi yang menghasilkan keuntungan, sedangkan nilai di sebelah kiri garis merah menunjukkan transaksi yang mengalami kerugian.
ggplot(data, aes(x = Harga_Jual)) +
geom_density(fill = "orange", alpha = 0.6, color = "darkorange") +
labs(title = "Density Plot - Distribusi Harga Jual Produk",
x = "Harga Jual (Rp)", y = "Density") +
scale_x_continuous(labels = scales::comma) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold"))
Interpretasi: Density plot menunjukkan pola penyebaran harga jual produk yang tersedia di warung kelontong. Bagian puncak kurva menggambarkan kisaran harga yang paling sering muncul dalam transaksi, sehingga dapat memberikan gambaran mengenai harga produk yang paling banyak dijual kepada pelanggan.
ggplot(data, aes(x = Kategori, y = Laba_Rugi, fill = Kategori)) +
geom_boxplot() +
geom_hline(yintercept = 0, color = "red", linetype = "dashed") +
labs(title = "Boxplot - Laba/Rugi per Kategori Produk",
x = "Kategori", y = "Laba/Rugi (Rp)") +
scale_y_continuous(labels = scales::comma) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold"),
axis.text.x = element_text(angle = 30, hjust = 1),
legend.position = "none") +
scale_fill_brewer(palette = "Set2")
Interpretasi: Boxplot memperlihatkan variasi laba atau rugi pada setiap kategori produk. Garis merah menunjukkan titik Break Even Point (BEP). Jika median suatu kategori berada di atas garis tersebut, maka kategori tersebut secara umum memberikan keuntungan. Sebaliknya, jika berada di bawah garis, maka kategori tersebut cenderung mengalami kerugian.
Berdasarkan hasil analisis data penjualan Warung Kelontong, dapat disimpulkan bahwa sebagian besar transaksi yang terjadi memberikan keuntungan bagi usaha. Hal ini terlihat dari dominasi status transaksi yang berada pada kategori untung.
Selain itu, beberapa kategori produk memiliki kontribusi keuntungan yang lebih besar dibandingkan kategori lainnya. Distribusi laba rugi juga menunjukkan bahwa sebagian besar transaksi berada pada nilai positif, meskipun masih terdapat beberapa transaksi yang mengalami kerugian.
Secara keseluruhan, data penjualan menunjukkan bahwa usaha warung kelontong memiliki performa yang cukup baik dan mampu menghasilkan keuntungan dari aktivitas penjualannya.