1. Sumber Data


2. Import Data

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>

3. Variabel yang Digunakan

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)

4. Statistik Deskriptif

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

5. Pie Chart - Status Transaksi (Untung/Rugi/BEP)

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.

6. Bar Chart - Total Laba/Rugi per Kategori

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.

7. Histogram - Distribusi Laba/Rugi per Transaksi

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.

8. Density Plot - Distribusi Harga Jual

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.

9. Boxplot - Laba/Rugi per Kategori

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.

Kesimpulan

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.