library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ 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)
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
library(plotly)
##
## 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)
data.p <- read_xlsx("C:/semester 4/visdat/data tugas prak visdat.xlsx")
## New names:
## • `` -> `...3`
## • `` -> `...6`
## • `` -> `...8`
data.p
## # A tibble: 84,688 × 9
## `Pendidikan Terakhir` `Pendidikan Prasekolah` ...3 Umur `Jam kerja` ...6
## <chr> <chr> <lgl> <dbl> <dbl> <lgl>
## 1 SD Tidak Mengikut Pendidika… NA 68 0 NA
## 2 D3 Tidak Mengikut Pendidika… NA 46 0 NA
## 3 SMK Tidak Mengikut Pendidika… NA 16 0 NA
## 4 SD Taman Kanak-kanak NA 6 0 NA
## 5 SD Tidak Mengikut Pendidika… NA 62 0 NA
## 6 SD Tidak Mengikut Pendidika… NA 38 48 NA
## 7 SMA Tidak Mengikut Pendidika… NA 54 50 NA
## 8 SMP Tidak Mengikut Pendidika… NA 41 0 NA
## 9 SD Tidak Mengikut Pendidika… NA 10 0 NA
## 10 SMP Tidak Mengikut Pendidika… NA 40 48 NA
## # ℹ 84,678 more rows
## # ℹ 3 more variables: `Status pekerjaan` <chr>, ...8 <lgl>,
## # `Penerima PIP` <chr>
data.p %>%
count(`Pendidikan Terakhir`) %>%
arrange(desc(n)) %>%
ggplot() +
geom_segment(aes(x = fct_reorder(as.factor(`Pendidikan Terakhir`), n), xend = fct_reorder(as.factor(`Pendidikan Terakhir`), n), y = 0, yend = n), color = "lightpink") +
geom_point(aes(x = fct_reorder(as.factor(`Pendidikan Terakhir`), n), y = n), color = "lightgreen", size = 2) +
scale_y_continuous(expand = c(0, 0)) +
coord_flip() +
ggtitle("Pendidikan Terakhir") +
xlab("") +
ylab("Frekuensi") +
theme_light() +
theme(plot.title = element_text(hjust = 0.5))
Pendidikan terakhir dari responden divisualisasikan menggunakan Lollipop
Chart. Dari chart tersebut dapat dilihat paling banyak responden
memiliki pendidikan terakhir SD. Disusul oleh SMA dan SMP dimana
jumlahnya hampir sama disekitar 10,000-15,000. Hampir 10,000 responden
tidakbersekolah. Paling sedikit reaponden memiliki pendidikan terakhir
SPM/PDF Wustha
Dari responden yang memiliki pendidiakan prasekolah, paling banyak
mengikuti taman kanak-kanak dengan jumlah lebih dari 3,000 responden.
Paling sedikit yaitu Taman Penitipan Anak, jumlahnya tidak sampa 1,000,
berbeda jauh dengan taman kanak-kanak
ggplot(data.p)+
geom_density(aes(x=Umur,fill= "umur" ),color="lightpink", alpha=0.4)+
labs(title="Density Plot Sebaran Umur")+
xlab("Umur")+
ylab("density")+
xlim(0,100)
Sebaran uumur dari responden menunjukkan distribusi bimodal atau
memiliki 2 puncak yang menunjukkan modus. Pertama ada di sekitar 0-13
tahun. Kedua sekitar 38-50 tahun. Responden paling sedkit memiliki umur
antara 75-100.
data.p2 <- data.p %>%
filter(`Jam kerja` > 0)
ggplot(data.p2) +
geom_boxplot(aes(y=`Jam kerja`)) +
labs(title="Boxplot Sebaran Jam Kerja")
Boxplot bagi responden yang sudah bekerja jam kerja menunjukkan
distribusi data Condong ke atas artinya, sebagian besar data
terkonsentrasi di bagian bawah nilai-nilai yang lebih rendah ini juga
disebabkan oleh terdapat beberapa outlier atas. Berarti kebanyakan
responden bekerja untuk waktu yang lama
library(treemap)
treemap(data.p,
index=c("Status pekerjaan"),
vSize="Umur",
draw=TRUE,
title="Treemap: Status Pekerjaan",
fontsize.title=20,
fontsize.labels=12,
fontcolor.labels="black",
palette = blues9)
Treemap tersebut menunjukkan paling banyak responden yang belum bekerja,
kedua terbanyak yaitu yang bekerja sebagai buruh/karyawan/pegawai. Dan
paling sedikit reponden yang memiliki status pekerjaan Berusaha dibantu
tetap
library(ggplot2)
# Hitung frekuensi
data_count <- count(data.p, `Penerima PIP`)
ggplot(data_count, aes(x = "", y = n , fill = `Penerima PIP`)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y", start = 0) +
scale_fill_brewer(palette = "Blues") +
theme_void() +
theme(legend.position = "right") +
labs(title = "Komposisi Penerima PIP", fill = "Kamar Tidur") +
geom_text(aes(label = n), position = position_stack(vjust = 0.5))
Pie chart tersebut menunjukkan komposisi penerima PIP (Program Indonesia
Pintar). Paling banyak yaitu responden yang tidak menjawab sebanyak
53,620. Keuda, tidak menerima PIP sebanyak 26,997, terakhir penerima PIP
sebanyak 3.091 oarang