Read Data
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.2
library(sf)
## Warning: package 'sf' was built under R version 4.3.2
## Linking to GEOS 3.11.2, GDAL 3.7.2, PROJ 9.3.0; sf_use_s2() is TRUE
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(stringr)
library(ggplot2)
library(reshape2)
data <- read_xlsx("D:\\Campss\\Season 4\\AED\\3\\Data Tugas 1 AED.xlsx")
## New names:
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
data1 <- data[-(1:2),]
data1 <- data1[-35,]
data1 <- as.data.frame(lapply(data1, function(x) gsub("\\,", ".", x)))
data1$Provinsi <- lapply(data1$Provinsi, function(x) str_to_title(x))
data1[11,1] <- "DKI Jakarta"
data1[14,1] <- "DI Yogyakarta"
colnames(data1) <- c("Provinsi", "Februari 2022", "Agustus 2022", "Februari 2023", "Agustus 2023")
data1$`Februari 2022`<- as.numeric(data1$`Februari 2022`)
data1$`Februari 2023`<- as.numeric(data1$`Februari 2023`)
data1$`Agustus 2022`<- as.numeric(data1$`Agustus 2022`)
data1$`Agustus 2023`<- as.numeric(data1$`Agustus 2023`)
{
feb22 <- as.numeric(data1$`Februari 2022`)
feb23 <- as.numeric(data1$`Februari 2023`)
agt22 <- as.numeric(data1$`Agustus 2022`)
agt23 <- as.numeric(data1$`Agustus 2023`)
}
yr2022 <- data.frame(feb22, agt22)
yr2023 <- data.frame(feb23, agt23)
provinsi <- as.factor(unlist(data1$Provinsi))
data2 <- data.frame(provinsi, feb22, agt22, feb23, agt23)
mean22 <- mean(c(mean(feb22),mean(agt22)))
mean23 <- mean(c(mean(feb23),mean(agt23)))
data1$`Tahun 2022` <- rowMeans(data2[, c("feb22", "agt22")])
data1$`Tahun 2023` <- rowMeans(data2[, c("feb23", "agt23")])
data3 <- data.frame(provinsi, feb22, agt22, feb23, agt23, data1$`Tahun 2022`, data1$`Tahun 2023`)
colnames(data3) <- c("Provinsi", "Februari 2022", "Agustus 2022", "Februari 2023", "Agustus 2023", "Tahun 2022", "Tahun 2023")
Pulau <- c(rep("Sumatera",10), rep("Jawa",6), rep("Nusa Tenggara",3), rep("Kalimantan",5), rep("Sulawesi",6), rep("Maluku",2), rep("Papua",2))
data.pulau <- data.frame(data1, Pulau)
{
sumatera <- subset(data.pulau, Pulau == "Sumatera")
jawa <- subset(data.pulau, Pulau == "Jawa")
kalimantan <- subset(data.pulau, Pulau == "Kalimantan")
sulawesi <- subset(data.pulau, Pulau == "Sulawesi")
papua <- subset(data.pulau, Pulau == "Papua")
}
datpulau5 <- rbind(sumatera, jawa, kalimantan, sulawesi, papua)
colnames(datpulau5) <- c("Provinsi", "Februari 2022", "Agustus 2022", "Februari 2023", "Agustus 2023", "Tahun 2022", "Tahun 2023", "Pulau")
View(data1)
Statistik Deskriptif
statdesc <- function(a){
x <- as.numeric(a)
Max <- round(max(x), 2)
Min <- round(min(x),2)
Mean <- round(mean(x),2)
Qrt.1 <- round(quantile(x,0.25),2)
Med <- round(median(x),2)
Qrt.3 <- round(quantile(x,0.75),2)
Var <- round(var(x),2)
Stdev <- round(sqrt(Var),2)
Range <- round((Max-Min),2)
frek <- table(x)
Mod <- as.numeric(names(frek)[frek == max(frek)])
dt <- as.data.frame(rbind(Max, Min, Mod, Mean, Qrt.1, Med, Qrt.3, Var, Stdev, Range))
colnames(dt) <- "Statistik Deskriptif"
return(dt)
}
(statdesc(agt23))
## Statistik Deskriptif NA
## Max 7.52 7.52
## Min 2.27 2.27
## Mod 4.23 4.31
## Mean 4.61 4.61
## Qrt.1 3.49 3.49
## Med 4.32 4.32
## Qrt.3 5.76 5.76
## Var 2.01 2.01
## Stdev 1.42 1.42
## Range 5.25 5.25
Visualisasi Data
Boxplot
ggplot(data=newdat, aes(x = reord, y = Angka, color = Bulan)) +
geom_boxplot()

ggplot(data=newdat, aes(x = reord,
y = Angka, color = Bulan)) +
geom_boxplot()+
geom_jitter(alpha = 0.5) +
theme()+
labs(x = NULL, y = "Tingkat Pengangguran Terbuka Indonesia")+
scale_x_discrete(limits = rev(levels(reord)))

reord <- reorder(newdat$Bulan, newdat$Angka, FUN = median)
orderp <- reorder(data.pulau$Pulau, data.pulau$Tahun.2023, FUN = median)
neworder <- reorder(datpulau5$Pulau, datpulau5$`Tahun 2023`, FUN = median)
ggplot(data=datpulau5, aes(x = neworder, y = `Tahun 2023`, color = Pulau)) +
geom_boxplot()+
geom_jitter(alpha = 0.5) +
theme()+
labs(x = NULL, y = "Tingkat Pengangguran Terbuka Indonesia Tahun 2023")+
scale_x_discrete()

ggplot(data=newdatyr, aes(x = reord2,
y = Nilai, color = Tahun)) +
geom_boxplot()+
geom_jitter(alpha = 0.5) +
scale_x_discrete(limits = rev(levels(reord2))) +
theme()+
labs(x = NULL, y = "Tingkat Pengangguran Terbuka Indonesia")

Histogram
ggplot(data = newdat, aes(x=Angka)) +
geom_histogram(aes(fill=Bulan)) +
scale_fill_brewer(palette="Set2") +
facet_wrap( ~ Bulan, ncol=1) +
xlab("TPT Indonesia") +
ylab("Frekuensi") +
theme_bw() +
ggtitle("Angka TPT per Bulan\n")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

library(dplyr)
library(plyr)
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
##
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
rataan<-ddply(newdat, "Bulan", summarise, rata2=mean(Angka))
ggplot(newdat, aes(x=Angka, color=Bulan)) +
geom_histogram(fill="white")+
geom_vline(data=rataan, aes(xintercept=rata2, color=Bulan),
linetype="dashed")+
theme(legend.position="top")+
labs(y = "Frekuensi", x = "Angka TPT Indonesia") +
geom_text(data = rataan, aes(x = rata2-0.1, y = 11.7, label = paste(round(rata2,1))), vjust = -1, size = 2.2) +
theme(legend.position="top")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

statdesc(feb22)
## Statistik Deskriptif NA
## Max 8.53 8.53
## Min 3.11 3.11
## Mod 4.20 5.75
## Mean 5.12 5.12
## Qrt.1 3.98 3.98
## Med 4.78 4.78
## Qrt.3 5.92 5.92
## Var 2.31 2.31
## Stdev 1.52 1.52
## Range 5.42 5.42
Density Plot
# Density
ggplot(data3)+
geom_density(aes(x=`Februari 2022`,fill= "Februari 2022" ),color="coral", alpha=0.4)+
geom_density(aes(x=`Februari 2023`,fill= "Februari 2023" ),color="#e9ecef", alpha=0.4)+
geom_density(aes(x=`Agustus 2022`,fill="Agustus 2022"), color="#e9ecef", alpha=0.4)+
geom_density(aes(x=`Agustus 2023`,fill= "Agustus 2023" ),color="cyan", alpha=0.4)+
labs(title="Density Plot Sebaran Data Tingkat Pengangguran Terbuka Indonesia")+
xlab("Tingkat Pengangguran Terbuka")+
xlim(1,10.2)+
scale_fill_manual(name = NULL,
values = c("Februari 2022" = "#e41a1c", "Februari 2023" = "#4daf4a",
"Agustus 2022" = "#377eb8", "Agustus 2023" = "#984ea3"))

ggplot(data3)+
geom_density(aes(x=`Tahun 2022`,fill= "Tahun 2022" ),color="#e9ecef", alpha=0.4)+
geom_density(aes(x=`Tahun 2023`,fill= "Tahun 2023" ),color="#e9ecef", alpha=0.4)+
labs(title="Density Plot Sebaran Data Tingkat Pengangguran Terbuka Indonesia")+
xlab("TPT")+
ylab("Jumlah")+
xlim(1,10.2)

Histogram (gif)
library(gganimate)
## Warning: package 'gganimate' was built under R version 4.3.2
library(gifski)
## Warning: package 'gifski' was built under R version 4.3.2
library(av)
## Warning: package 'av' was built under R version 4.3.2
animasi<- ggplot(newdat,aes(Angka)) +
geom_histogram(col = "white",fill = "blue") +
transition_states(Bulan,5,0.5, wrap = F)+
view_follow(fixed_x = T)
animasi
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Bar Chart
ggplot(data = data3,
aes(x = Provinsi, y = `Tahun 2023`)) +
geom_bar(stat = "identity") +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
labs(title = "Tingkat Pengangguran Terbuka", subtitle="Tingkat Pengangguran Terbuka di Indonesia Tahun 2023",
caption="Sumber: Badan Pusat Statistik", y = "TPT", x = "Provinsi")

ggplot(data = data3, aes(x = Provinsi)) +
geom_bar(aes(y = `Tahun 2022`, fill = "Tahun 2022"), stat = "identity", position = position_dodge(width = 0.8)) +
geom_bar(aes(y = `Tahun 2023`, fill = "Tahun 2023"), stat = "identity", position = position_dodge(width = 0.8)) +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
labs(
title = "Tingkat Pengangguran Terbuka",
subtitle = "Tingkat Pengangguran Terbuka di Indonesia Tahun 2023",
caption = "Sumber: Badan Pusat Statistik",
y = "TPT",
x = "Provinsi"
) +
scale_fill_manual(values = c("Tahun 2022" = "#f44369", "Tahun 2023" = "#3e3b92"), name = "Tahun")

data3_melted <- melt(data3[,c(1,6:7)], id.vars = "Provinsi", variable.name = "Tahun", value.name = "TPT")
data4 <- melt(data3[,c(1:5)], id.vars = "Provinsi", variable.name = "Bulan", value.name = "TPT")
# Plotting
ggplot(data = data3_melted, aes(x = Provinsi, y = TPT, fill = Tahun)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.8)) +
theme(axis.text.x = element_text(size = 8,angle = 45, hjust = 1)) +
labs(
title = "Tingkat Pengangguran Terbuka",
subtitle = "Tingkat Pengangguran Terbuka di Indonesia Tahun 2023",
caption = "Sumber: Badan Pusat Statistik",
y = "TPT",
x = "Provinsi"
)

datpul_melt <- melt(datpulau5[,c(2:5, 8)],id.vars = "Pulau", variable.name = "Bulan", value.name = "TPT")
ggplot(data = datpul_melt, aes(x = Pulau, y = TPT, fill = Bulan)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.9)) +
theme(axis.text.x = element_text(size = 10,angle = 0, hjust = 0.5)) +
labs(
title = "Tingkat Pengangguran Terbuka",
subtitle = "Tingkat Pengangguran Terbuka di Indonesia Tahun 2022 - 2023",
caption = "Sumber: Badan Pusat Statistik",
y = "TPT",
x = "Pulau"
)

# Plot chart vertikal
ggplot(data = data3_melted, aes(x = TPT, y = Provinsi, fill = Tahun)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.8)) +
theme(axis.text.y = element_text(angle = 0, hjust = 1, size = 6),
axis.text.x = element_text(size = 8, angle = 0, hjust = 1)) +
labs(
title = "Tingkat Pengangguran Terbuka",
subtitle = "Perbandingan Tingkat Pengangguran Terbuka di Indonesia Tahun 2022 dan 2023",
caption = "Sumber: Badan Pusat Statistik",
x = "TPT",
y = "Provinsi"
)

View(data3_melted)
ggplot(data = data4, aes(x = TPT, y = Provinsi, fill = Bulan)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.8)) +
theme(axis.text.y = element_text(angle = 0, hjust = 1, size = 6),
axis.text.x = element_text(size = 8, angle = 0, hjust = 1)) +
labs(
title = "Tingkat Pengangguran Terbuka",
subtitle = "Perbandingan Tingkat Pengangguran Terbuka di Indonesia Tahun 2022 dan 2023",
caption = "Sumber: Badan Pusat Statistik",
x = "TPT",
y = "Provinsi"
)

Peta Konsentrasi
#Base Map
library(indonesia)
prov <- id_map("indonesia", "provinsi")
colnames(prov) <- c("Provinsi", "geometry")
View(prov)
prov_merge <- merge(prov, data1, by = "Provinsi")
## old-style crs object detected; please recreate object with a recent sf::st_crs()
ggplot(prov) +
geom_sf()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()

#Continuous
library(viridis)
## Warning: package 'viridis' was built under R version 4.3.2
## Loading required package: viridisLite
ggplot(prov_merge) +
geom_sf(aes(fill = `Februari 2022`)) +
scale_fill_viridis_c(option = "F")

#Discrete
prov_mod <- prov_merge
{
prov_mod$`Februari 2022` <- as.numeric(as.character(prov_mod$`Februari 2022`))
prov_mod$`Februari 2023` <- as.numeric(as.character(prov_mod$`Februari 2023`))
prov_mod$`Agustus 2022` <- as.numeric(as.character(prov_mod$`Agustus 2022`))
prov_mod$`Agustus 2023` <- as.numeric(as.character(prov_mod$`Februari 2023`))
}
ggplot(prov_mod) +
geom_sf(aes(fill = `Tahun 2022`)) +
scale_fill_gradient(high = c("#DC443F","darkblue"), low = "#FFEDD2")+
labs(title = "Tahun 2022")

ggplot(prov_mod) +
geom_sf(aes(fill = `Tahun 2023`)) +
scale_fill_gradient(high = c("#DC443F","darkblue"), low = "#FFEDD2")+
labs(title = "Tahun 2023")

#hehe
ggplot(prov_mod) +
geom_sf(aes(fill = `Agustus 2023`)) +
scale_fill_gradient(high = c("#fff1bf", "#ec458d"), low = "#474ed7")

ggplot(prov_mod) +
geom_sf(aes(fill = `Tahun 2023`)) +
scale_fill_gradient(high = c("blue", "#ec458d"), low = "#fff1bf")+
labs(title = "Tahun 2023")

ggplot(prov_mod) +
geom_sf(aes(fill = `Tahun 2022`)) +
scale_fill_gradient(high = c("#474ed7", "#ec458d"), low = "#fff1bf")+
labs(title = "Tahun 2022")
