Siapkan paket
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.2
## Warning: package 'ggplot2' was built under R version 4.3.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── 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(ggmosaic)
## Warning: package 'ggmosaic' was built under R version 4.3.3
##
## Attaching package: 'ggmosaic'
##
## The following object is masked from 'package:GGally':
##
## happy
Read data
data <- read.csv("D:\\IPB\\Statistika Sem 4\\Visualisasi Data\\Tugas akhir visdat\\2023 Maret JABAR - SUSENAS KOR INDIVIDU PART1.csv",sep=";")
Ambil variabel dan filter
#ambil variabel R105,R616 ke dalam data1 dan R105,R616 ke dalam data2
data1 <- data[,c("R105","R616")]
data2 <- data[,c("R105","R615")]
head(data1)
## R105 R616
## 1 2 0
## 2 2 0
## 3 2 5
## 4 2 5
## 5 1 0
## 6 1 0
head(data2)
## R105 R615
## 1 2 0
## 2 2 0
## 3 2 5
## 4 2 5
## 5 1 0
## 6 1 0
#filter R611 di data1 yang bernilai selain 0 dan 5 lalu masukan ke variabel data1
data1 <- data1[data1$R616 != 0,]
data1 <- data1[data1$R616 != 5,]
head(data1)
## R105 R616
## 61 1 1
## 87 1 1
## 146 2 1
## 172 2 1
## 188 2 1
## 235 2 1
#filter R615 di data2 yang bernilai selain 0 dan 5, kemudian ubah nilai 2 menjadi 1 karena sama-sama mengartikan "ya"
data2 <- data2[data2$R615 != 0,]
data2 <- data2[data2$R615 != 5,]
data2$R615 <- ifelse(data2$R615 == 2,1,data2$R615)
data2$R615 <- as.numeric(data2$R615)
head(data2)
## R105 R615
## 55 1 1
## 87 1 1
## 138 1 1
## 154 1 1
## 155 1 1
## 172 2 1
#filter data1 dimana R105 bernilai 1 kedalam variabel datapip_kota
datapip_kota <- data1[data1$R105 == 1,]
#filter data1 dimana R105 bernilai 2 kedalam variabel datapip_desa
datapip_desa <- data1[data1$R105 == 2,]
#filter data2 dimana R105 bernilai 1 kedalam variabel datakip_kota
datakip_kota <- data2[data2$R105 == 1,]
#filter data2 dimana R105 bernilai 2 kedalam variabel datakip_desa
datakip_desa <- data2[data2$R105 == 2,]
Memerge data
#satukan datapip_kota dan datapip_desa kedalam variabel daerahpip dan hitung frekuensi masing-masing
Daerahpip <- rbind(datapip_kota,datapip_desa)
table(Daerahpip$R105)
##
## 1 2
## 1983 1108
#satukan datakip_kota dan datakip_desa kedalam variabel daerahkip dan hitung frekuensi masing-masing
Daerahkip <- rbind(datakip_kota,datakip_desa)
table(Daerahkip$R105)
##
## 1 2
## 1945 1126
Ubah variabel
#ubah variabel 1 dan 2 menjadi perkotaan dan pedesaan
Daerahpip$R105 <- factor(Daerahpip$R105,levels=c(1,2),labels=c("Perkotaan","Pedesaan"))
table(Daerahpip$R105)
##
## Perkotaan Pedesaan
## 1983 1108
Daerahkip$R105 <- factor(Daerahkip$R105,levels=c(1,2),labels=c("Perkotaan","Pedesaan"))
table(Daerahkip$R105)
##
## Perkotaan Pedesaan
## 1945 1126
#ubah R105 menjadi variabel Keterangan
names(Daerahpip)[names(Daerahpip)=="R105"] <- "Keterangan"
names(Daerahkip)[names(Daerahkip)=="R105"] <- "Keterangan"
Membuat bar chart
#penerima program PIP
library(ggplot2)
ggplot(Daerahpip,aes(x=Keterangan,fill=Keterangan))+
geom_bar()+
geom_text(stat='count',aes(label=..count..),vjust=-0.5)+
labs(title="Frekuensi Penerima Program PIP",x="Daerah",y="Frekuensi")+
scale_fill_brewer(palette = "Set2")
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

#Penerima program KIP
ggplot(Daerahkip,aes(x=Keterangan,fill=Keterangan))+
geom_bar()+
geom_text(stat='count',aes(label=..count..),vjust=-0.5)+
labs(title="Frekuensi Penerima KIP",x="Daerah",y="Frekuensi")+
scale_fill_brewer(palette = "Set2")

Mengambil variabel dan memanipulasi datanya
#ambil hanya kolom R105 dan R616 dan R615
data1 <- data[,c("R105","R616","R615")]
#hapus baris yang memiliki variabel R616 bernilai 0 dan R615 bernilai 0
data1 <- data1[data1$R616 != 0,]
#ubah nilai 2 menjadi 1 pada variabel R615
data1$R615 <- ifelse(data1$R615 == 2,1,data1$R615)
#jika R616 = 1 dan R615 = 5 lalu buat variabel bernama Keterangan dengan nilai "penerima pip"
data1$Keterangan <- ifelse(data1$R616 == 1 & data1$R615 == 5,"PIP",NA)
#jika R616 = 5 dan R615 = 1 lalu buat variabel bernama Keterangan dengan nilai "penerima kip"
data1$Keterangan <- ifelse(data1$R616 == 5 & data1$R615 == 1,"KIP",data1$Keterangan)
#jika R616 = 1 dan R615 = 1 lalu buat variabel bernama Keterangan dengan nilai "penerima pip dan kip"
data1$Keterangan <- ifelse(data1$R616 == 1 & data1$R615 == 1,"PIP dan KIP",data1$Keterangan)
#jika R616 = 5 dan R615 = 5 lalu buat variabel bernama Keterangan dengan nilai "bukan penerima pip dan kip"
data1$Keterangan <- ifelse(data1$R616 == 5 & data1$R615 == 5,"Non Penerima",data1$Keterangan)
head(data1)
## R105 R616 R615 Keterangan
## 3 2 5 5 Non Penerima
## 4 2 5 5 Non Penerima
## 9 2 5 5 Non Penerima
## 12 1 5 5 Non Penerima
## 13 1 5 5 Non Penerima
## 14 1 5 5 Non Penerima
Ubah type data dan variabel
#ubah type data R105 menjadi factor
data1$R105 <- factor(data1$R105,levels=c(1,2),labels=c("Perkotaan","Pedesaan"))
#ubah R105 menjadi variabel Daerah
names(data1)[names(data1)=="R105"] <- "keterangan"
head(data1)
## keterangan R616 R615 Keterangan
## 3 Pedesaan 5 5 Non Penerima
## 4 Pedesaan 5 5 Non Penerima
## 9 Pedesaan 5 5 Non Penerima
## 12 Perkotaan 5 5 Non Penerima
## 13 Perkotaan 5 5 Non Penerima
## 14 Perkotaan 5 5 Non Penerima
Membuat mosaic plot
ggplot(data1) +
geom_mosaic(aes(x = product(keterangan, Keterangan))) +
labs(title = "Mosaic Plot: Penerima Program PIP dan KIP",
x = "Program", y = "Daerah") +
theme(axis.text.x = element_text(angle = 60, hjust = 1))
## Warning: `unite_()` was deprecated in tidyr 1.2.0.
## ℹ Please use `unite()` instead.
## ℹ The deprecated feature was likely used in the ggmosaic package.
## Please report the issue at <https://github.com/haleyjeppson/ggmosaic>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Membuat stacked bar chart
#100% stacked bar chart
data1 %>%
ggplot(aes(x = Keterangan, fill = keterangan)) +
geom_bar(position = "fill") +
labs(title = "100 Percent Stacked Bar Chart: Penerima Program PIP dan KIP",
x = "Program", y = "Persentase") +
theme(axis.text.x = element_text(angle = 0, hjust = 0.5)) +
scale_fill_brewer(palette = "Set2")

#stacked bar chart
data1 %>%
ggplot(aes(x = Keterangan, fill = keterangan)) +
geom_bar() +
labs(title = "Stacked Bar Chart: Penerima Program PIP dan KIP",
x = "Program", y = "Frekuensi") +
scale_fill_brewer(palette = "Set2")
