# Import Library yang Dibutuhkan
library(readr)
library(dplyr)
## 
## 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)
data <- read_delim("C:/Users/MUTHI'AH IFFA/Downloads/ProjekAED.csv", delim = ";")
## Rows: 25890 Columns: 18
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## dbl (18): URUT, R102, R105, R301, FOOD, EXPEND, WERT, PakaiKF, BeliKF, Pakai...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
data
## # A tibble: 25,890 × 18
##      URUT  R102  R105  R301   FOOD EXPEND   WERT PakaiKF BeliKF PakaiKTF BeliKTF
##     <dbl> <dbl> <dbl> <dbl>  <dbl>  <dbl>  <dbl>   <dbl>  <dbl>    <dbl>   <dbl>
##  1 500001     7     2     4 2.66e6 4.96e6 4.55e2       0      0        0       0
##  2 500002    72     1     2 1.11e6 1.63e6 1.72e2      35  45000        0       0
##  3 500003     6     2     3 2.41e6 3.81e6 2.42e2      84 160000        0       0
##  4 500004    72     1     7 7.77e6 1.21e7 9.37e1     126 214000        0       0
##  5 500005    77     1     3 4.93e6 5.12e7 1.22e2      16  58000        0       0
##  6 500006    77     1     2 3.27e6 1.47e7 7.64e0       0      0        0       0
##  7 500007    75     1     2 2.71e6 5.02e6 4.72e1       0      0        0       0
##  8 500008    11     2     6 1.74e6 2.66e6 7.40e2      42  52200        0       0
##  9 500009    10     2     2 1.27e6 2.21e6 2.42e2      84 132000        0       0
## 10 500010     1     1     4 1.36e6 2.08e6 1.34e3      36  43000        0       0
## # ℹ 25,880 more rows
## # ℹ 7 more variables: PakaiP <dbl>, BeliP <dbl>, PakaiT <dbl>, BeliT <dbl>,
## #   Pakai <dbl>, Beli <dbl>, `Pernah khawatir tidak cukup makanan?` <dbl>
# Menentukan Garis Kemiskinan
GK <- 550458  # Nilai garis kemiskinan (sesuaikan dengan kebijakan)

# Menentukan Kelompok Kesejahteraan
data <- data %>%
  mutate(kelompok_kesejahteraan = case_when(
    EXPEND < GK ~ "Miskin",                              # Pengeluaran di bawah garis kemiskinan
    EXPEND >= GK & EXPEND < 1.5 * GK ~ "Rentan Miskin",  # 1 - 1.5 kali garis kemiskinan
    EXPEND >= 1.5 * GK & EXPEND < 3.5 * GK ~ "Menuju Kelas Menengah",  # 1.5 - 3.5 kali GK
    EXPEND >= 3.5 * GK & EXPEND < 17 * GK ~ "Kelas Menengah",          # 3.5 - 17 kali GK
    EXPEND >= 17 * GK ~ "Kelas Atas",                    # Lebih dari 17 kali GK
    TRUE ~ NA_character_                                 # Jika tidak memenuhi kriteria
  ))

# Menentukan Perokok dan Non-Perokok
data <- data %>%
  mutate(Perokok = ifelse(PakaiKF > 0 | PakaiKTF > 0 | PakaiP > 0 | PakaiT > 0 | Pakai > 0, 1, 0))

# Hitung Proporsi Kelompok Kesejahteraan
data_plot_kesejahteraan <- data %>%
  group_by(kelompok_kesejahteraan) %>%
  summarise(Proporsi = n() / nrow(data), .groups = "drop")

# Hitung Proporsi Perokok dan Non-Perokok di Setiap Kelompok Kesejahteraan
data_plot_perokok <- data %>%
  group_by(kelompok_kesejahteraan, Perokok) %>%
  summarise(Proporsi = n() / nrow(data), .groups = "drop")
## Load library yang dibutuhkan
library(readr)
library(dplyr)
library(ggplot2)

# Import data dengan delimiter yang benar
data <- read_delim("C:/Users/MUTHI'AH IFFA/Downloads/ProjekAED.csv", delim = ";")
## Rows: 25890 Columns: 18
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## dbl (18): URUT, R102, R105, R301, FOOD, EXPEND, WERT, PakaiKF, BeliKF, Pakai...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Cek struktur data
print(dim(data))  # Periksa jumlah baris dan kolom
## [1] 25890    18
print(colnames(data))  # Cek nama kolom yang berhasil diimpor
##  [1] "URUT"                                
##  [2] "R102"                                
##  [3] "R105"                                
##  [4] "R301"                                
##  [5] "FOOD"                                
##  [6] "EXPEND"                              
##  [7] "WERT"                                
##  [8] "PakaiKF"                             
##  [9] "BeliKF"                              
## [10] "PakaiKTF"                            
## [11] "BeliKTF"                             
## [12] "PakaiP"                              
## [13] "BeliP"                               
## [14] "PakaiT"                              
## [15] "BeliT"                               
## [16] "Pakai"                               
## [17] "Beli"                                
## [18] "Pernah khawatir tidak cukup makanan?"
# Menentukan kelompok kesejahteraan berdasarkan pengeluaran per kapita
GK <- 550458  # Garis kemiskinan (sesuai nilai sebelumnya)

data <- data %>%
  mutate(kelompok_kesejahteraan = case_when(
    (EXPEND / R301) < GK ~ "Miskin",
    (EXPEND / R301) >= GK & (EXPEND / R301) < 1.5 * GK ~ "RM",
    (EXPEND / R301) >= 1.5 * GK & (EXPEND / R301) < 3.5 * GK ~ "MKM",
    (EXPEND / R301) >= 3.5 * GK & (EXPEND / R301) < 17 * GK ~ "KM",
    (EXPEND / R301) >= 17 * GK ~ "KA",
    TRUE ~ NA_character_
  ))

# Cek apakah ada kategori yang hilang
table(data$kelompok_kesejahteraan, useNA = "ifany")
## 
##     KA     KM Miskin    MKM     RM 
##    359   6311   1915  12054   5251
# Menentukan status perokok: 1 jika ada konsumsi rokok, 0 jika tidak
data <- data %>%
  mutate(status_perokok = ifelse(PakaiKF > 0 | PakaiKTF > 0 | PakaiP >0 | PakaiT > 0, 1, 0))

# Menghitung proporsi berbobot per kategori kesejahteraan
tabulasi_berbobot <- data %>%
  group_by(kelompok_kesejahteraan, status_perokok) %>%
  summarise(total_bobot = sum(WERT, na.rm = TRUE), .groups = 'drop') %>%
  group_by(kelompok_kesejahteraan) %>%
  mutate(proporsi_berbobot = total_bobot / sum(total_bobot))

# Tampilkan hasil
print(tabulasi_berbobot)
## # A tibble: 10 × 4
## # Groups:   kelompok_kesejahteraan [5]
##    kelompok_kesejahteraan status_perokok total_bobot proporsi_berbobot
##    <chr>                           <dbl>       <dbl>             <dbl>
##  1 KA                                  0      81895.             0.650
##  2 KA                                  1      44117.             0.350
##  3 KM                                  0    1138323.             0.384
##  4 KM                                  1    1823843.             0.616
##  5 MKM                                 0    1648350.             0.259
##  6 MKM                                 1    4722608.             0.741
##  7 Miskin                              0     375084.             0.289
##  8 Miskin                              1     924630.             0.711
##  9 RM                                  0     762002.             0.250
## 10 RM                                  1    2287473.             0.750
# Ubah kelompok_kesejahteraan menjadi faktor dengan urutan yang diinginkan
tabulasi_berbobot <- tabulasi_berbobot %>%
  mutate(kelompok_kesejahteraan = factor(
    kelompok_kesejahteraan, 
    levels = c("Miskin", "RM", "MKM", "KM", "KA")  # Urutan yang diinginkan
  ))

# Visualisasi menggunakan horizontal stacked bar chart
ggplot(tabulasi_berbobot, aes(y = kelompok_kesejahteraan, x = proporsi_berbobot, fill = as.factor(status_perokok))) +
  geom_bar(stat = "identity", position = "fill") +  # "fill" untuk stacked bar chart 100%
  scale_fill_manual(values = c("blue", "lightblue"), labels = c("Tidak Merokok", "Merokok")) +
  labs(
    title = "Proporsi Perokok Berbobot Berdasarkan Kelompok Kesejahteraan",
    y = "Kelompok Kesejahteraan",
    x = "Proporsi Berbobot (Stacked)",
    fill = "Status Merokok",
    caption = "Keterangan:\nMiskin (M), Rentan Miskin (RM), Menuju Kelas Menengah (MKM),\nKelas Menengah (KM), Kelas Atas (KA)"
  ) +
  theme_minimal() +
  coord_flip()  # Membuat bar chart menjadi horizontal