library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.2
## Warning: package 'ggplot2' was built under R version 4.3.2
## Warning: package 'dplyr' was built under R version 4.3.2
## Warning: package 'lubridate' was built under R version 4.3.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.5.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggridges)
library(GGally)
## Warning: package 'GGally' was built under R version 4.3.2
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
library(plotly)
## Warning: package 'plotly' was built under R version 4.3.2
##
## Attaching package: 'plotly'
##
## The following object is masked from 'package:ggplot2':
##
## last_plot
##
## The following object is masked from 'package:stats':
##
## filter
##
## The following object is masked from 'package:graphics':
##
## layout
datasusenas <- read.csv("C:/Users/Lenovo/Downloads/datasusenas.csv", header = TRUE, sep=",")
str(datasusenas)
## 'data.frame': 25890 obs. of 199 variables:
## $ X : int 0 1 2 3 4 5 6 7 8 9 ...
## $ URUT : int 500001 500002 500003 500004 500005 500006 500007 500008 500009 500010 ...
## $ PSU : int 12448 31373 12092 31135 33988 34062 33428 18431 18089 114 ...
## $ SSU : int 123442 311039 119908 308689 336798 337531 331261 182888 179477 1020 ...
## $ WI1 : int 12435 31360 12079 31122 33975 34049 33415 18418 18076 101 ...
## $ WI2 : int 123427 311024 119893 308674 336783 337516 331246 182873 179462 1005 ...
## $ R101 : int 32 32 32 32 32 32 32 32 32 32 ...
## $ R102 : int 7 72 6 72 77 77 75 11 10 1 ...
## $ R105 : int 2 1 2 1 1 1 1 2 2 1 ...
## $ NUINFORT : int 2 1 2 2 1 1 1 2 2 2 ...
## $ R1701 : int 5 1 5 5 5 5 1 1 1 5 ...
## $ R1702 : int 5 1 5 5 5 5 1 1 5 5 ...
## $ R1703 : int 5 1 5 5 5 5 1 5 5 5 ...
## $ R1704 : int 5 5 5 5 5 5 1 5 5 5 ...
## $ R1705 : int 5 5 5 5 5 5 1 5 5 5 ...
## $ R1706 : int 5 5 5 5 5 5 1 5 5 5 ...
## $ R1707 : int 5 5 5 5 5 5 1 5 5 5 ...
## $ R1708 : int 5 5 5 5 5 5 1 5 5 5 ...
## $ NUINFORT1 : int 2 1 2 2 1 1 1 2 2 2 ...
## $ R1801 : int 1 1 1 2 1 1 1 2 1 1 ...
## $ R1802 : int 1 1 1 1 3 1 3 1 1 1 ...
## $ R1803 : int 5 1 1 1 0 1 0 5 1 5 ...
## $ R1804 : int 110 35 96 300 84 300 100 42 54 80 ...
## $ R1805 : int 5 5 5 5 1 1 5 5 5 1 ...
## $ R1806 : int 2 3 2 2 2 2 2 2 2 1 ...
## $ R1807 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R1808 : int 4 6 2 2 2 2 2 2 2 2 ...
## $ R1809A : int 2 1 1 1 1 1 1 1 1 1 ...
## $ R1809B : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R1809C : int 1 4 1 1 1 1 1 1 3 1 ...
## $ R1809D : int 98 0 20 98 98 98 98 98 0 8 ...
## $ R1809E : int 7 0 7 7 7 7 7 7 0 7 ...
## $ R1810A : int 4 4 5 2 1 1 4 7 4 5 ...
## $ R1810B : int 2 2 1 0 0 0 2 2 1 1 ...
## $ R1811A : int 2 1 1 2 1 1 1 2 1 1 ...
## $ R1811B : int 998 0 0 10 0 0 0 998 0 0 ...
## $ R1812 : int 5 5 5 5 5 5 1 5 5 5 ...
## $ R1813A : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1813B : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1813C : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1813D : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1813E : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1814A : int 4 4 5 5 4 3 4 7 4 5 ...
## $ R1814B : int 2 2 1 2 2 0 2 2 1 1 ...
## $ R1815A : int 1 1 1 1 1 1 1 1 1 2 ...
## $ R1815B : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R1815C : int 1 1 5 1 1 1 5 1 1 1 ...
## $ R1816 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R1816B1 : int 1 1 1 2 1 3 3 1 1 1 ...
## $ R1816B2 : int 0 0 1 0 0 0 0 0 0 0 ...
## $ R1816B3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R1817 : int 4 4 4 4 2 3 4 4 4 4 ...
## $ R1901A : int 1 5 5 1 5 5 5 5 5 5 ...
## $ R1901B : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901C : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901D : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901E : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901F : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901G : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901H : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901I : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1901J : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2001A : int 5 5 5 5 1 1 5 5 5 5 ...
## $ R2001B : int 1 5 1 1 1 1 5 1 1 5 ...
## $ R2001C : int 5 5 5 5 5 1 5 5 5 5 ...
## $ R2001D : int 5 5 5 5 5 1 5 5 5 5 ...
## $ R2001E : int 5 5 5 5 5 1 5 5 5 5 ...
## $ R2001F : int 1 5 5 5 1 1 5 5 5 5 ...
## $ R2001G : int 5 5 5 5 5 1 5 1 5 5 ...
## $ R2001H : int 5 5 1 1 1 1 1 1 1 1 ...
## $ R2001I : int 5 5 5 5 1 1 5 5 5 5 ...
## $ R2001J : int 5 5 5 5 1 5 5 5 5 5 ...
## $ R2001K : int 5 5 5 5 1 1 5 5 5 5 ...
## $ R2001L : int 5 5 5 5 1 1 5 5 5 5 ...
## $ R2001M : int 1 1 1 1 5 1 5 5 1 5 ...
## $ R2002_A : chr "A" "A" "A" "A" ...
## $ R2002_B : chr "" "" "" "" ...
## $ R2002_C : chr "" "" "" "" ...
## $ R2002_D : chr "" "" "" "" ...
## $ R2101A : int 2 1 1 1 1 4 2 1 1 1 ...
## $ R2101B : int 0 2 1 1 2 0 0 4 1 1 ...
## $ R2101C : int 2 0 0 0 0 0 3 0 0 0 ...
## $ R2201A2 : int 1 5 5 5 5 5 5 5 5 5 ...
## $ R2201A3 : int 1 0 0 0 0 0 0 0 0 0 ...
## $ R2201B2 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2201B3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R2201C2 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2201C3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R2201D2 : int 5 5 5 5 1 5 5 5 5 5 ...
## $ R2201D3 : int 0 0 0 0 1 0 0 0 0 0 ...
## $ R2201E2 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2201E3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R2201F2 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R2201F3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R2202 : int 2 1 5 5 5 5 5 2 2 5 ...
## $ R2203 : int 1 5 5 5 5 5 5 5 5 5 ...
## $ R2204A : int 1 0 0 0 0 0 0 0 0 0 ...
## $ R2204B : int 4 0 0 0 0 0 0 0 0 0 ...
## $ R2204C_A : chr "A" "" "" "" ...
## [list output truncated]
library(dplyr)
library(ggplot2)
datasusenas$sumber_air <- case_when(
datasusenas$R1810A == 1 ~ "Air kemasan bermerk",
datasusenas$R1810A == 2 ~ "Air isi ulang",
datasusenas$R1810A == 3 ~ "Leding",
datasusenas$R1810A == 4 ~ "Sumur bor/pompa",
datasusenas$R1810A == 5 ~ "Sumur terlindung",
datasusenas$R1810A == 6 ~ "Sumur tak terlindung",
datasusenas$R1810A == 7 ~ "Mata air terlindung",
datasusenas$R1810A == 8 ~ "Mata air tak terlindung",
datasusenas$R1810A == 9 ~ "Air permukaan (sungai, danau/waduk, kolam, irigasi)",
datasusenas$R1810A == 10 ~ "Air hujan",
datasusenas$R1810A == 11 ~ "Lainnya",
)
ggplot(datasusenas, aes(x = sumber_air)) +
geom_bar(fill = "#D1E5F0") +
labs(title = "Apa sumber air utama yang digunakan untuk minum?",
x = "Sumber Air",
y = "Jumlah")+ coord_flip() +
theme_classic()
datasusenas %>%
count(sumber_air) %>%
slice_max(n = 11, order_by = n) %>%
ggplot() +
geom_col(aes(x = fct_reorder(as.factor(sumber_air), n), y = n), fill = "#D1E5F0", width = 0.4) +
geom_text(aes(x = fct_reorder(as.factor(sumber_air), n), y = n, label = n),
position = position_stack(vjust = 0.5), color = "black", size = 4) +
labs(title = "Sumber air utama yang digunakan untuk minum di Jawa Barat 2023",
x = "Sumber Air",
y = "Frekuensi") +
coord_flip()+
theme_classic()
Pada Bar Chart tentang sumber air minum utama yang digunakan Jawa Barat pada 2023 di atas terlihat bahwa sumber air utama yang lebih banyak digunakan oleh warga Jawa Barat pada tahun 2023 adalah air isi ulang dengan jumlah pemakaian 9828, disusul sumur bor/pompa, kemudian sumur terlindung. Sedangkan sumber air utama digunakan paling sedikit adalah air hujan dengan jumlah pemakaian 10. Grafik yang diurutkan lebih menarik dan mudah diterima oleh pembaca karena bisa menarik kesimpulan yang terbanyak digunakan dan yang paling sedikit.
datasusenas %>%
count(sumber_air) %>%
arrange(desc(n)) %>%
ggplot() +
geom_segment(aes(x = fct_reorder(as.factor(sumber_air), n), xend = fct_reorder(as.factor(sumber_air), n), y = 0, yend = n), color = "green") +
geom_point(aes(x = fct_reorder(as.factor(sumber_air), n), y = n), color = "red", size = 2) +
scale_y_continuous(expand = c(0, 0)) +
coord_flip() +
ggtitle("Apa sumber air utama yang digunakan untuk minum?") +
xlab("Sumber Air") +
ylab("Frekuensi") +
theme_classic() +
theme(plot.title = element_text(hjust = 0.5))
Pada Lollipop chart tentang sumber air minum utama yang digunakan Jawa Barat pada 2023 di atas terlihat bahwa sumber air utama yang lebih banyak digunakan oleh warga Jawa Barat pada tahun 2023 adalah air isi ulang dengan jumlah pemakaian 9828, disusul sumur bor/pompa, kemudian sumur terlindung. Sedangkan sumber air utama digunakan paling sedikit adalah air hujan dengan jumlah pemakaian 10. Grafik yang diurutkan lebih menarik dan mudah diterima oleh pembaca karena bisa menarik kesimpulan yang terbanyak digunakan dan yang paling sedikit.
ggplot(datasusenas)+
geom_histogram(aes(x=R1804), binwidth = 50, fill="maroon", color="#e9ecef", alpha=0.8)+
labs(title="Sebaran Luas Lantai Bangunan Jawa Barat 2023")+
xlab("Luas Lantai Bangunan")+
ylab("Frekuensi")+
theme_classic()
Histogram menunjukkan bahwa luas lantai bangunan di Jawa Barat pada 2023 memiliki ekor panjang ke kanan, menunjukkan adanya beberapa bangunan besar. Hal ini membuat nilai mean > median > modus. Data ekstrim dengan luas 935m² menonjol, sementara sebagian besar bangunan memiliki luas 0-250m². Hal ini menunjukkan variasi luas bangunan di Jawa Barat, dengan sebagian besar kecil dan beberapa yang sangat besar.
ggplot(datasusenas)+
geom_density(aes(x=R1804,fill= "luas lantai" ),color="maroon", alpha=0.5)+
labs(title="Sebaran Luas Lantai Bangunan di Jawa Barat 2023")+
xlab("Luas Lantai Bangunan")+
ylab("Frekuensi")
Density plot terkait sebaran luas lantai bangunan di Jawa Barat 2023 menunjukkan bahwa luas lantai bangunan di Jawa Barat pada 2023 memiliki ekor panjang ke kanan, menunjukkan adanya beberapa bangunan besar. Hal ini membuat nilai mean > median > modus. Data ekstrim dengan luas 935m² menonjol, sementara sebagian besar bangunan memiliki luas 0-250m². Hal ini menunjukkan variasi luas bangunan di Jawa Barat, dengan sebagian besar kecil dan beberapa yang sangat besar.
datasusenas$makan_bergizi <- case_when(
datasusenas$R1702 == 1 ~ "ya",
datasusenas$R1702 == 5 ~ "tidak",
datasusenas$R1702 == 8 ~ "tidak tahu",
datasusenas$R1702 == 9 ~ "menolak menjawab",
)
library(ggplot2)
ggplot(datasusenas, aes(x = "", fill = makan_bergizi)) +
geom_bar(width = 1, stat = "count") +
coord_polar(theta = "y") +
labs(title = "Apakah ada saat dimana tidak dapat menyantap makanan sehat dan bergizi?",
fill = "Respon") +
scale_fill_manual(values = c("ya" = "green", "tidak" = "coral","tidak tahu" = "purple","menolak menjawab" = "blue")) + # Mengganti warna
theme_void() +
geom_text(aes(label = after_stat(count)), stat = "count", position = position_stack(vjust = 0.5), parse = FALSE, check_overlap = FALSE, na.rm = FALSE, size = 3)
dapat dilihat dari pie chart di atas bahwa jawaban ‘tidak’ atas pertanyaan “Apakah ada saat dimana tidak dapat menyantap makanan sehat dan bergizi?” sangat mendominasi dengan 23697 respon. kemudian disusul jawaban ‘ya’ dan yang paling sedikit adalah responden yang menolak menjawab yakni 10 responden. maka dari itu sebanyak 23 ribu lebih responden tidak pernah memiliki saat dimana tidak bisa menyantap makanan sehat dan bergizi
###Treemap
library(treemap)
## Warning: package 'treemap' was built under R version 4.3.2
# Mengubah data angka menjadi faktor dengan keterangan yang diinginkan
datasusenas$R1810A <- factor(datasusenas$R1810A,
labels = c("Air kemasan bermerk",
"Air isi ulang",
"Leding",
"Sumur bor/pompa",
"Sumur terlindung",
"Sumur tak terlindung",
"Mata air terlindung",
"Mata air tak terlindung",
"Air permukaan",
"Air hujan",
"Lainnya"))
datasusenas$R1812 <- factor(datasusenas$R1812,
labels = c("Ya", "Tidak", "Tidak tahu"))
# Visualisasi treemap dengan keterangan yang sudah diubah
treemap(datasusenas,
index = c("R1812", "R1810A"),
vSize = "R1811A",
draw = TRUE,
title = "Treemap: Kekurangan air dan sumber air utama yang digunakan",
fontsize.title = 14,
fontsize.labels = 12,
fontcolor.labels = "white")
Treemap menunjukkan mayoritas responden tidak mengalami kekurangan air. Mereka cenderung menggunakan sumber air isi ulang, sumur bor, atau sumur terlindung. Sedikit yang tidak tahu tentang status air mereka. Ini menandakan akses yang stabil terhadap pasokan air, berpotensi mendukung kesejahteraan dan kesehatan masyarakat. Implikasinya, program-program untuk meningkatkan akses air bersih mungkin fokus pada pengembangan dan pemeliharaan sumber-sumber air yang sudah ada.