Kelompok 6
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: Pie chart menunjukkan proporsi transaksi yang menghasilkan untung, rugi, atau BEP (Break Even Point). Semakin besar porsi hijau, semakin sehat kondisi keuangan warung.
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: Bar chart menampilkan total laba atau rugi tiap kategori produk. Batang hijau = menguntungkan, batang merah = merugi.
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 menunjukkan sebaran nilai laba/rugi tiap transaksi. Nilai di kanan garis merah = untung, di kiri = rugi.
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 menggambarkan pola sebaran harga jual produk. Puncak kurva menunjukkan kisaran harga yang paling banyak dijual di warung kelontong.
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 menunjukkan sebaran laba/rugi tiap kategori. Garis merah = titik BEP. Kategori dengan median di atas garis merah berarti secara umum menguntungkan.
Berdasarkan analisis data penjualan Warung Kelontong: