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
library(dplyr)
library(ggplot2)
library(treemap)
## Warning: package 'treemap' was built under R version 4.3.2
library(treemapify)
## Warning: package 'treemapify' was built under R version 4.3.2
Data <- read.csv("C:/Users/Lenovo/Downloads/datasusenas.csv", header = TRUE, sep=",")
view (Data)
str (Data)
## '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]
Data$R1809C[is.na(Data$R1809C)]<-10 #Mengubah missing value menjadi nilai 10
for (i in 1:length(Data$R1809C)){
if (Data$R1809C[i]==1){
Data$R1809C[i]<-"Tangki septik"}
else if (Data$R1809C[i]==2){
Data$R1809C[i]<-"IPAL"}
else if (Data$R1809C[i]==3){
Data$R1809C[i]<-"Kolam/sawah/sungai/danau/laut"}
else if (Data$R1809C[i]==4){
Data$R1809C[i]<-"Lubang tanah"}
else if (Data$R1809C[i]==5){
Data$R1809C[i]<-"Pantai/tanah lapang/kebun"}
else if (Data$R1809C[i]==6){
Data$R1809C[i]<-"Lainnya"}
}
tinja <- Data[Data$R1809C != 0, ] #Menghapus data '0' yang tidak sesuai pada jawaban pertanyaan kuisioner
tinja <- tinja[tinja$R1809C != 10, ] #Menghapus missing value pada data
tinja %>%
count(R1809C) %>%
slice_max(n = 6, order_by = n) %>%
ggplot() +
geom_col(aes(x = fct_reorder(as.factor(R1809C), n), y = n), fill = "maroon", width = 0.8) +
geom_text(aes(x = fct_reorder(as.factor(R1809C), n), y = n, label = n),
position = position_stack(vjust = 0.5), color = "white", size = 1.8) +
coord_flip() +
scale_y_continuous(expand = c(0, 0)) +
ggtitle("Tempat Pembuangan Tinja Anggota Rumah Tangga") +
xlab("Respon") +
ylab("Jumlah Rumah Tangga") +
theme_light() +
theme(plot.title = element_text(hjust = 0.5, size = 15))
Bar chart di atas mengambil topik mengenai jenis tempat pembuangan akhir tinja dari anggota rumah tangga yang terdaftar pada data Keterangan Pokok Anggota Rumah Tangga SUSENAS 2023. Diambil satu variabel dari data dengan kode R1809C dengan sumbu X berupa jenis tempat pembuangan tinja (Tangki septik, IPAL, Kolam/sawah/sungai/danau/laut, Lubang tanah, Pantai/tanah lapang/kebun, dan Lainnya) dan sumbu Y berupa jumlah anggota rumah tangga.
Dari bar chart di atas, dapat dilihat bahwa puncak data atau jenis tempat pembuangan akhir tinja terbanyak adalah tangki septik dengan sebanyak 17722 rumah tangga. Kemudian, pada jenis tempat pembuangan akhir tinja terbanyak kedua terdapat 3585 rumah tangga menggunakan Kolam/sawah/sungai/danau/laut sebagai jenis tempat pembuangan akhir tinja. Kemudian, disusul lubang tanah dan IPAL sebagai jenis tempat pembuangan akhir tinja terbanyak ketiga dan keempat.
tinja %>%
count(R1809C) %>%
arrange(desc(n)) %>%
ggplot() +
geom_segment(aes(x = fct_reorder(as.factor(R1809C), n), xend = fct_reorder(as.factor(R1809C), n), y = 0, yend = n), color = "lightblue") +
geom_point(aes(x = fct_reorder(as.factor(R1809C), n), y = n), color = "pink", size = 4) +
scale_y_continuous(expand = c(0, 0)) +
coord_flip() +
ggtitle("Tempat Pembuangan Tinja Anggota Rumah Tangga") +
xlab("Respon") +
ylab("Jumlah Rumah Tangga") +
theme_classic() +
theme(plot.title = element_text(hjust = 0.5, size = 15))
Lollipop chart di atas mengambil topik mengenai jenis tempat pembuangan akhir tinja dari anggota rumah tangga yang terdaftar pada data Keterangan Pokok Anggota Rumah Tangga SUSENAS 2023. Diambil satu variabel dari data dengan kode R1809C dengan sumbu X berupa jenis tempat pembuangan tinja (Tangki septik, IPAL, Kolam/sawah/sungai/danau/laut, Lubang tanah, Pantai/tanah lapang/kebun, dan Lainnya) dan sumbu Y berupa jumlah anggota rumah tangga.
Dari lollipop chart di atas, dapat dilihat bahwa puncak data atau jenis tempat pembuangan akhir tinja terbanyak adalah tangki septik dengan sebanyak 17722 rumah tangga. Kemudian, pada jenis tempat pembuangan akhir tinja terbanyak kedua terdapat 3585 rumah tangga menggunakan Kolam/sawah/sungai/danau/laut sebagai jenis tempat pembuangan akhir tinja. Kemudian, disusul lubang tanah dan IPAL sebagai jenis tempat pembuangan akhir tinja terbanyak ketiga dan keempat.
ggplot(Data)+
geom_density(aes(x=R1804,fill= "Luas lantai" ),color="yellow", alpha=0.5)+
labs(title="Sebaran Luas Lantai Rumah Tempat Tinggal")+
xlab("Luas Lantai")+
ylab("Jumlah")
Density plot di atas mengambil topik mengenai luas lantai rumah tempat tinggal yang terdaftar pada data Keterangan Pokok Anggota Rumah Tangga SUSENAS 2023 dengan kode data R1804. Dari density plot di atas dapat dilihat bahwa sebaran data menjulur ke kanan, dimana artinya puncak data berada di sebelah kiri. Sebaran luas lantai terbanyak dapat dilihat pada rentang luas 0 - 175 m2. Sedangkan, luas lantai >250 m2 memiliki sebaran yang sedikit. Selain itu, terdapat pula data pencilan atas dengan luas 935 m2.
ggplot(Data)+
geom_boxplot(aes(y=R1804), color="darkblue")+
labs(title="Sebaran Luas Lantai Rumah Tempat Tinggal")+
ylab("Luas Lantai")+
theme_classic()
Boxplot di atas mengambil topik mengenai luas lantai rumah tempat tinggal yang terdaftar pada data Keterangan Pokok Anggota Rumah Tangga SUSENAS 2023. Dari boxplot di atas dapat dilihat bahwa sebaran data menjulur ke kanan, dimana artinya puncak data berada di sebelah kiri. Sebaran luas lantai terbanyak dapat dilihat pada rentang luas 0 - 175 m2, yang dilihat dari banyak titik yang menumpuk pada rentang tersebut. Sedangkan, luas lantai >250 m2 memiliki sebaran yang sedikit. Selain itu, terdapat pula data pencilan atas dengan luas 935 m2.
Data$StatusKepemilikan <- case_when(
Data$R1802 == 1 ~ "Milik sendiri",
Data$R1802 == 2 ~ "Kontrak/sewa",
Data$R1802 == 3 ~ "Bebas sewa",
Data$R1802 == 4 ~ "Dinas",
Data$R1802 == 5 ~ "Lainnya",
)
Data$R1802[is.na(Data$R1802)]<- 0
Bangun <- Data[Data$R1802!= 0, ]
View(Bangun)
ggplot(Bangun, aes(x = "R1802", fill = StatusKepemilikan)) +
geom_bar(stat = "count", width = 1) +
coord_polar(theta = "y") +
scale_fill_brewer(palette = "Greens") +
theme_void() +
theme(legend.position = "bottom") +
labs(title = "Status Kepemilikan Bangunan Tempat Tinggal", fill = "Status Kepemilikan")
Pie chart tersebut menyoroti status kepemilikan bangunan tempat tinggal dari anggota rumah tangga yang terdaftar dalam data Keterangan Pokok Anggota Rumah Tangga SUSENAS 2023 dengan kode data R1802. Dari visualisasi tersebut, terlihat bahwa mayoritas anggota rumah tangga memiliki status kepemilikan bangunan tempat tinggal yang merupakan milik sendiri. Sementara itu, status kepemilikan yang kedua terbanyak adalah bebas sewa, diikuti oleh kontrak/sewa.
Data %>% mutate(R1810A = case_when(
Data$R1810A == 1 ~ "Air kemasan bermerk",
Data$R1810A == 2 ~ "Air isi ulang",
Data$R1810A == 3 ~ "Leding",
Data$R1810A == 4 ~ "Sumur bor/pompa",
Data$R1810A == 5 ~ "Sumur terlindung",
Data$R1810A == 6 ~ "Sumur tak terlindung",
Data$R1810A == 7 ~ "Mata air terlindung",
Data$R1810A == 8 ~ "Mata air tak terlindung",
Data$R1810A == 9 ~ "Air permukaan (sungai, danau/waduk, kolam, irigasi)",
Data$R1810A == 10 ~ "Air hujan",
Data$R1810A == 11 ~ "Lainnya"
)) %>%
treemap(Data,
index=c("R1810A"),
vSize= "X",
draw=TRUE,
title="Treemap: Sumber Air Minum",
fontsize.title=17,
fontsize.labels=12,
fontcolor.labels="white")
Treemap tersebut menganalisis sumber air utama tempat minum yang digunakan oleh anggota rumah tangga, berdasarkan data dari Keterangan Pokok Anggota Rumah Tangga SUSENAS 2023 dengan kode data R1810A. Dari visualisasi tersebut, terlihat bahwa mayoritas anggota rumah tangga menggunakan air isi ulang sebagai sumber air utama untuk minum. Ini menunjukkan preferensi yang dominan terhadap penggunaan air isi ulang di antara anggota rumah tangga yang disurvei.