# 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
