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 'tibble' was built under R version 4.3.2
## Warning: package 'tidyr' was built under R version 4.3.2
## Warning: package 'readr' was built under R version 4.3.2
## Warning: package 'purrr' was built under R version 4.3.2
## Warning: package 'dplyr' was built under R version 4.3.2
## Warning: package 'forcats' 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.1
## âś” ggplot2 3.4.4 âś” 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 (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
library (ggmosaic)
## Warning: package 'ggmosaic' was built under R version 4.3.2
library (GGally)
## Warning: package 'GGally' was built under R version 4.3.2
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
##
## Attaching package: 'GGally'
##
## The following object is masked from 'package:ggmosaic':
##
## happy
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 (readxl)
library (ggplot2)
data <- read.csv("D:/visdat/data susenas.csv")
str(data)
## 'data.frame': 84688 obs. of 100 variables:
## $ X : int 0 1 2 3 4 5 6 7 8 9 ...
## $ URUT : int 500001 500001 500001 500001 500002 500002 500003 500003 500003 500004 ...
## $ PSU : int 12448 12448 12448 12448 31373 31373 12092 12092 12092 31135 ...
## $ SSU : int 123442 123442 123442 123442 311039 311039 119908 119908 119908 308689 ...
## $ WI1 : int 12435 12435 12435 12435 31360 31360 12079 12079 12079 31122 ...
## $ WI2 : int 123427 123427 123427 123427 311024 311024 119893 119893 119893 308674 ...
## $ R101 : int 32 32 32 32 32 32 32 32 32 32 ...
## $ R102 : int 7 7 7 7 72 72 6 6 6 72 ...
## $ R105 : int 2 2 2 2 1 1 2 2 2 1 ...
## $ R401 : int 1 2 3 4 1 2 1 2 3 1 ...
## $ R403 : int 1 3 6 6 1 3 1 2 3 1 ...
## $ R404 : int 4 2 1 1 3 1 2 2 1 2 ...
## $ R405 : int 2 2 2 1 2 1 1 2 2 1 ...
## $ R407 : int 68 46 16 6 62 38 54 41 10 40 ...
## $ R408 : int 0 5 0 0 0 0 1 1 0 1 ...
## $ R409 : int 20 22 0 0 16 0 27 18 0 16 ...
## $ R406A: int 5 2 23 17 6 28 10 12 21 26 ...
## $ R406B: int 4 10 1 8 12 7 11 11 4 3 ...
## $ R406C: int 1954 1976 2007 2016 1960 1984 1968 1981 2012 1982 ...
## $ R410 : int 2 2 2 2 1 1 2 2 2 2 ...
## $ R501 : int 1 1 0 0 2 0 1 1 0 1 ...
## $ R502 : int 1 2 3 4 1 1 1 1 1 1 ...
## $ R503 : int 0 1 2 2 0 1 0 0 2 0 ...
## $ R504 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R506 : int 2 2 2 1 2 1 1 2 2 1 ...
## $ R507 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R508 : int 5 2 2 2 2 1 5 5 1 1 ...
## $ R509 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R601 : int 32 32 32 32 32 32 32 32 32 32 ...
## $ R602 : int 7 7 7 7 72 72 6 6 6 72 ...
## $ R603 : int 32 32 32 32 32 32 32 32 32 32 ...
## $ R604 : int 7 7 7 7 72 72 6 6 6 72 ...
## $ R605 : int 0 0 0 3 0 0 0 0 4 0 ...
## $ R606 : int 0 0 0 1 0 0 0 0 0 0 ...
## $ R607 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ R608 : int 1 1 1 1 5 5 1 1 1 1 ...
## $ R609 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R610 : int 3 3 3 2 3 3 3 3 2 3 ...
## $ R611 : int 0 0 0 1 0 0 0 0 1 0 ...
## $ R612 : int 3 19 15 3 3 3 13 8 3 8 ...
## $ R613 : int 8 8 1 1 8 8 8 8 5 8 ...
## $ R614 : int 3 19 8 25 3 3 13 8 25 8 ...
## $ R615 : int 0 0 5 5 0 0 0 0 5 0 ...
## $ R616 : int 0 0 5 5 0 0 0 0 5 0 ...
## $ R617 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R618 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R619 : int 0 0 3 1 0 0 0 0 2 0 ...
## $ R620 : int 0 0 0 0 0 0 0 0 3 0 ...
## $ R621 : int 0 0 0 0 0 0 0 0 4 0 ...
## $ R701 : int 1 1 5 5 5 1 1 5 5 1 ...
## $ R702 : int 1 5 5 5 5 5 1 5 5 1 ...
## $ R704 : int 3 3 3 0 3 1 1 3 2 1 ...
## $ R705 : int 5 5 5 0 5 0 0 5 5 0 ...
## $ R706 : int 0 0 0 0 0 11 12 0 0 13 ...
## $ R707 : int 0 0 0 0 0 5 1 0 0 4 ...
## $ R708 : int 0 0 0 0 0 48 50 0 0 48 ...
## $ R709 : int 0 0 0 0 0 48 50 0 0 97 ...
## $ R801 : int 5 1 1 5 1 1 1 1 1 1 ...
## $ R802 : int 5 1 1 5 1 1 1 1 1 1 ...
## $ R808 : int 5 1 1 5 5 5 1 1 1 1 ...
## $ R812 : int 5 5 1 5 5 5 5 5 5 5 ...
## $ R901 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R902 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R903 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R904 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R905 : int 5 5 5 5 5 5 5 5 5 5 ...
## $ R906 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R907 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R908 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R909 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R910 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R911 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R912 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R913 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R914 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R915 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R916 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ R1001: int 1 1 1 1 1 1 1 1 1 1 ...
## $ R1002: int 4 4 4 4 4 4 4 4 4 4 ...
## $ R1003: int 8 8 8 8 8 8 8 8 8 8 ...
## $ R1004: int 4 4 4 4 4 4 4 4 4 4 ...
## $ R1005: int 8 8 8 8 8 8 8 8 8 8 ...
## $ R1006: int 4 4 4 4 4 4 4 4 4 4 ...
## $ R1007: int 8 8 8 8 8 8 8 8 8 8 ...
## $ R1008: int 4 4 4 4 4 4 4 4 4 4 ...
## $ R1009: int 8 8 8 8 8 8 8 8 8 8 ...
## $ R1010: int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1102: int 5 5 1 1 5 5 5 5 5 5 ...
## $ R1103: int 0 0 5 5 0 0 0 0 0 0 ...
## $ R1104: int 0 0 1 1 0 0 0 0 0 0 ...
## $ R1105: int 0 0 5 5 0 0 0 0 0 0 ...
## $ R1106: int 0 0 5 5 0 0 0 0 0 0 ...
## $ R1108: int 0 0 0 0 0 0 0 0 0 0 ...
## $ R1201: int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1203: int 0 0 0 0 0 0 0 0 0 0 ...
## $ R1206: int 5 5 5 5 5 5 5 5 5 5 ...
## $ R1207: int 5 5 5 5 5 1 1 5 5 1 ...
## $ R1208: int 0 0 0 0 0 35 49 0 0 112 ...
## $ R1209: int 5 5 5 5 5 1 1 5 5 1 ...
## [list output truncated]
data1 <- data.frame(data$R607, data$R608, data$R609, data$R709)
data1 <- subset(data1, data$R607 != 0)
data1 <- subset(data1,data$R608 != 0)
data1 <- subset(data1, data$R609 != 0)
data1 <- subset(data1, data$R709 != 0)
dataprasekolah <- subset(data, R606 != 0)
ggplot(dataprasekolah, aes(x = factor(R606))) +
geom_bar(fill = "steelblue", width = 0.8) +
geom_text(stat = 'count', aes(label = after_stat(count)), vjust = -0.5) +
labs(title = "Jumlah ART Berumur 0-10 Tahun yang Mengikuti Pendidikan Pra-sekolah", x = "Jenis Pra-sekolah", y = "Frekuensi") +
theme_classic()
Dari bar chart di atas, dapat dilihat bahwa mayoritas anggota rumah tangga di Jawa Barat yang berumur 0-10 tahun mengikuti pendidikan pra-sekolah dengan kode 1 yaitu Taman Kanak-Kanan sebanyak 3599 individu. Kemudian, diikuti dengan pendidikan pra-sekolah dengan kode 4, yaitu satuan PAUD sejenis (PAUD terintegrasi BKB/Taman Posyandu, PAUD-TAAM, PAUD-PAK, PAUD-BIA, TKQ, dll) sebanyak 2487 individu. Hanya sebanyak 20 individu yang mengikuti pendidikan pra-sekolah dengan kode 6 yaitu, Taman Penitipan Anak.
data_top10 <- subset(data, R708 != 0)
data_top10 %>%
count(R708) %>%
slice_max(n = 10, order_by = n) %>%
ggplot() +
geom_col(aes(x = fct_reorder(as.factor(R708), n), y = n), fill = "#008080", width = 0.4) +
geom_text(aes(x = fct_reorder(as.factor(R708), n), y = n, label = n),
position = position_stack(vjust = 0.5), color = "white", size = 3) +
scale_y_continuous(expand = c(0, 0)) +
coord_flip() +
ggtitle("Top 10 Total Jam Kerja dalam Seminggu dari Pekerjaan Utama") +
xlab("Jumlah Jam Kerja dalam Seminggu") +
ylab("Frekuensi") +
theme_classic() +
theme(plot.title = element_text(hjust = 0.5, size = 15))
Berdasarkan bar chart di atas, terlihat bahwa mayoritas penduduk di Jawa Barat yaitu sebanyak 6297 individu memiliki total jam kerja selama 48 jam dalam seminggu dari pekerjaan utama. Kemudian, diikuti dengan penduduk yang memiliki total jam kerja selama 40 jam dalam seminggu dari pekerjaan utama yaitu sebanyak 3100 individu. Di urutan ketiga, terdapat sebanyak 3025 individu yang memiliki total jam kerja selama 56 jam dalam seminggu dari pekerjaan utama.
data %>%
group_by(R612) %>%
summarize(total_jam=mean(R709)) %>%
arrange(desc(total_jam)) %>%
slice_head (n = 10) %>%
ggplot(aes(x = reorder(R612, total_jam), y = total_jam)) +
geom_col(fill = "#81D8D0") +
geom_text(aes(label = round(total_jam, 1)), vjust = -0.5, color = "black", size = 3) +
scale_y_continuous(limits = c(0, 40)) +
coord_flip() +
ggtitle("Jenjang Pendidikan vs Jumlah Jam Kerja dalam Seminggu dari Seluruh Pekerjaan") +
xlab("Jenjang Pendidikan") +
ylab("Jumlah Jam Kerja dalam Seminggu dari Seluruh Pekerjaan") +
theme_bw()+
theme(plot.title = element_text(size = 12))
## Warning: Removed 1 rows containing missing values (`position_stack()`).
## Warning: Removed 1 rows containing missing values (`geom_text()`).
Berdasarkan bar chart di atas, dapat dilihat bahwa jenjang pendidikan dengan kode 24, yaitu jenjang pendidikan S3 memiliki rata-rata jam kerja selama 35.7 jam dalam seminggu dari seluruh pekerjaan. Kemudian, diikuti oleh jenjang pendidikan dengan kode 23, yaitu jenjang pendidikan S2 memiliki rata-rata jam kerja selama 32.3 jam dalam seminggu dari seluruh pekerjaan. Jenjang pendidikan dengan kode 20 (D4) dan jenjang pendidikan dengan kode 19 (D3) memiliki rata-rata jam kerja yang sama yaitu selama 31.6 jam dalam seminggu dari seluruh pekerjaan.
data2 <- subset(data, R709 != 0)
data2 %>%
count(R709) %>%
slice_max(n = 10, order_by = n) %>%
arrange(desc(n)) %>%
ggplot() +
geom_segment(aes(x = fct_reorder(as.factor(R709), n), xend = fct_reorder(as.factor(R709), n), y = 0, yend = n), color = "skyblue") +
geom_point(aes(x = fct_reorder(as.factor(R709), n), y = n), color = "coral", size = 2) +
geom_text(aes(x = fct_reorder(as.factor(R709), n), y = n, label = n), position = position_stack( vjust = 0.5), color = "black", hjust = 1, size = 3) +
scale_y_continuous(limits = c(0, 7000)) +
coord_flip() +
ggtitle("Top 10 Jumlah Jam Kerja dalam Seminggu dari Seluruh Pekerjaan") +
xlab("Jumlah Jam Kerja") +
ylab("Frekuensi") +
theme_light() +
theme(plot.title = element_text(hjust = 0.5))
Dari lollipop chart di atas, terlihat bahwa mayoritas penduduk di Jawa Barat yaitu sebanyak 6003 individu memiliki total jam kerja selama 48 jam dalam seminggu dari seluruh pekerjaan. Kemudian, sebanyak 3149 individu memiliki total jam kerja selama 56 jam dalam seminggu dari seluruh pekerjaan. Pada urutan ketiga, sebanyak 3036 individu memiliki total jam kerja selama 40 jam dalam seminggu dari seluruh pekerjaan.
data3 <- data.frame(R709 = ifelse(data$R709 != 0, data$R709, NA))
histdata3 <- ggplot(data3, aes(x = R709)) +
geom_histogram(binwidth = 3, fill = "#69b3a2", alpha = 1) +
labs(title = "Histogram Sebaran Jumlah Jam Kerja dari Seluruh Pekerjaan Selama Seminggu",
x = "Jumlah Jam Kerja",
y = "Frekuensi") +
theme_minimal()
histdata3
## Warning: Removed 46465 rows containing non-finite values (`stat_bin()`).
Berdasarkan histogram di atas dapat dilihat bahwa mayoritas data jumlah jam kerja dari seluruh pekerjaan dalam seminggu menyebar diantara 37.5-62.5 jam. Histogram menunjukkan jumlah jam kerja dari seluruh pekerjaan dalam seminggu bervariasi secara merata dan stabil di seluruh rentang nilai. Selain itu, dapat dilihat bahwa distribusi data mendekati normal.
data3 <- data.frame(R709 = ifelse(data$R709 != 0, data$R709, NA))
ggplot(data3, aes(x = as.numeric(R709), fill = "Jumlah Jam Kerja")) +
geom_density(color = "#e9ecef", alpha = 0.8) +
labs(title = "Density Plot Sebaran Jumlah Jam Kerja dari Seluruh Pekerjaan Selama Seminggu", x = "Jumlah Jam Kerja", y = "Density")
## Warning: Removed 46465 rows containing non-finite values (`stat_density()`).
Dari density plot di atas, dapat dilihat bahwa data jumlah jam kerja dari seluruh pekerjaan selama seminggu memiliki bentuk kurva yang menyerupai lonceng dengan puncak di tengah menunjukkan sebaran yang cenderung normal dan simetris. Terdapat satu puncak dari density plot tersebut, menunjukkan mayoritas penduduk memiliki jumlah jam kerja dari seluruh pekerjaan selama seminggu adalah sekitar 40 jam.
datakabkota <- read_excel("D:/visdat/data kabkota.xlsx")
merged_data <- merge(data, datakabkota, by.x = "R102", by.y = "KODE", all.x = TRUE)
merged_data$R102 <- ifelse(!is.na(merged_data$Kab), merged_data$Kab, merged_data$R102)
merged_data <- merged_data[, !names(merged_data) %in% c("Kab")]
databaru <- merged_data
treemap(
databaru,
index = c("R102", "R612"),
vSize = "R616",
algorithm = "pivotSize",
draw = TRUE,
title = "Treemap: Penerima PIP berdasarkan wilayah dan jenjang pendidikan tertinggi yang pernah/sedang dijalani",
fontsize.title = 10,
fontsize.labels = 8,
fontcolor.labels = "white"
)
Treemap di atas menggambarkan Penerima PIP berdasarkan wilayah dan jenjang pendidikan tertinggi yang pernah/sedang dijalani. Terlihat bahwa mayoritas penerima PIP merupakan penduduk wilayah Kabupaten Bogor dilihat dari kode jenjang pendidikan dengan urutan paling banyak menerima adalah 3 (SD), 13(SMA), 15 (SMK), 8 (SMP), 21(S1), 4(MI), 9(MTs), 11(Paket C), 14(MA), 6(Paket B), dan 1(Paket A). Sedangkan kota dengan penerima PIP paling sedikit adalah Kota Banjar dilihat dari kode jenjang pendidikan dengan urutan paling banyak menerima adalah 3 (SD), 8(SMP), 15(SMK), 13 (SMA), 21 (S1), 9 (MTs), 11 (Paket C), dan 14 (MA).