library(readxl)
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)
## Warning: package 'dplyr' was built under R version 4.3.2
##
## 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)
## Warning: package 'stringr' was built under R version 4.3.2
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.2
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.3.2
Baca Data
data <- read_xlsx("C:/Users/acer/Downloads/Data Tugas 1 AED.xlsx")
## New names:
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
data
## # A tibble: 37 × 5
## Provinsi Tingkat Pengangguran Terbuka Menurut Pro…¹ ...3 ...4 ...5
## <chr> <chr> <chr> <chr> <chr>
## 1 <NA> 2022 <NA> 2023… <NA>
## 2 <NA> Februari Agus… Febr… Agus…
## 3 ACEH 5.97 6.17 5,75 6,03
## 4 SUMATERA UTARA 5.47 6.16 5,24 5,89
## 5 SUMATERA BARAT 6.17 6.28 5,9 5,94
## 6 RIAU 4.40 4.37 4,25 4,23
## 7 JAMBI 4.70 4.59 4,5 4,53
## 8 SUMATERA SELATAN 4.74 4.63 4,53 4,11
## 9 BENGKULU 3.39 3.59 3,21 3,42
## 10 LAMPUNG 4.31 4.52 4,18 4,23
## # ℹ 27 more rows
## # ℹ abbreviated name: ¹​`Tingkat Pengangguran Terbuka Menurut Provinsi (Persen)`
data1 <- data[-(1:2),]
data1 <- data1[-35,]
data1 <- as.data.frame(lapply(data1, function(x) gsub("\\,", ".", x))) #substitusi koma menjadi titik
View(data1)
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`)
#Buat Variabel Baru
{
feb22 <- as.numeric(data1$`Februari 2022`)
feb23 <- as.numeric(data1$`Februari 2023`)
agt22 <- as.numeric(data1$`Agustus 2022`)
agt23 <- as.numeric(data1$`Agustus 2023`)
}
#dataframe Baru
yr2022 <- data.frame(feb22, agt22)
yr2023 <- data.frame(feb23, agt23)
#Ubah provinsi jadi faktor
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)))
#Buat kolom rataan tiap tahun
data1$`Tahun 2022` <- rowMeans(data2[, c("feb22", "agt22")])
data1$`Tahun 2023` <- rowMeans(data2[, c("feb23", "agt23")])
#biar rapih
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))
#memecah pulau berdasarkan pulau yang sesuai
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")
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(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
{
feb22name <- rep("Februari 2022", 34)
feb23name <- rep("Februari 2023", 34)
agt22name <- rep("Agustus 2022", 34)
agt23name <- rep("Agustus 2023", 34)
}
data1melt <- melt(data = data1, id.var = "Provinsi", variable.name = "Bulan",
value.name = "Nilai TPT")
Bulan <- as.factor(rbind(c(feb22name, agt22name, feb23name, agt23name)))
Angka <- as.numeric(rbind(c(feb22, agt22, feb23, agt23)))
newdat <- data.frame(Bulan,Angka)
reord <- reorder(newdat$Bulan, newdat$Angka, FUN = median) #ngurutin newdat berdasarkan median
ggplot()+
geom_boxplot(data=newdat, aes(x = Bulan, y = Angka))+
labs(x = NULL, y = "Persentase TPT")
# Mengubah variabel Bulan menjadi faktor dengan urutan yang diinginkan
newdat$Bulan <- factor(newdat$Bulan, levels = c("Februari 2022", "Agustus 2022", "Februari 2023", "Agustus 2023"))
ggplot(data = newdat, aes(x = Bulan, y = Angka, fill = Bulan , color=Bulan)) +
geom_boxplot(color="black") +
geom_jitter(alpha = 0.5)+
theme()+
scale_fill_manual(values = c("#711DB0", "#C21292", "#EF4040", "#FFA732")) +
labs(x = NULL, y = "Persentase TPT")
{
tahun22 <- rep("Tahun 2022", 34)
tahun23 <- rep("Tahun 2023", 34)
}
Tahun <- as.factor(rbind(c(tahun22, tahun23)))
Tahun22 <- as.factor(tahun22)
Tahun23 <- as.factor(tahun23)
Nilai <- as.numeric(rbind(c(data1$`Tahun 2022`, data1$`Tahun 2023`)))
Nilai22 <- as.numeric(data1$`Tahun 2022`)
Nilai23 <- as.numeric(data1$`Tahun 2023`)
newdatyr <- data.frame(Tahun, Nilai)
newdatyr22 <- data.frame(Tahun22, Nilai22)
newdatyr23 <- data.frame(Tahun23, Nilai23)
reord2 <- reorder(newdatyr$Tahun, newdatyr$Nilai, FUN = median)
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")
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 = 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(ggplot2)
# Menambahkan kolom baru yang berisi rangking TPT yang diurutkan secara menurun
data3 <- data3 %>%
mutate(Ranking = rank(`Tahun 2022`))
#filter 10 provinsi
top10_provinsi <- data3 %>%
top_n(10, `Tahun 2022`)
# Memplot menggunakan ggplot2 dengan pengurutan berdasarkan Ranking dan memberi warna
ggplot(data = top10_provinsi,
aes(x = `Tahun 2022`, y = reorder(Provinsi, Ranking), fill = `Tahun 2022`)) +
geom_bar(stat = "identity") +
geom_text(aes(label = `Tahun 2022`), hjust = 1.2, color = "white", size = 3) +
labs(title = "Tingkat Pengangguran Terbuka",
subtitle = "10 Povinsi dengan Tingkat Pengangguran Terbuka Tertinggi di Indonesia Tahun 2022",
caption = "Sumber: Badan Pusat Statistik", y = "Provinsi", x = "TPT (%)") +
scale_fill_gradient(low = "orange", high = "red")
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()
library(plyr)
## Warning: package 'plyr' was built under R version 4.3.2
## ------------------------------------------------------------------------------
## 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(datpulau5, "Pulau", summarise, rata2=mean(`Tahun 2022`))
ggplot(datpulau5, aes(neworder, `Tahun 2022`)) +
geom_violin(aes(col = Pulau), fill = "white", draw_quantiles = c(0.25,0.5,0.75)) +
geom_boxplot(width=.1, fill= "#4B5768", outlier.colour=NA)+
geom_jitter(position = position_jitter(width = 0.2), col="red", size=1.5)+
geom_hline(data=rataan, aes(yintercept=rata2, color=Pulau),
linetype="dashed", alpha = 2)+
# kuantil 1,2, dan 3
labs(x = NULL, y = "Tingkat Pengangguran Terbuka Indonesia Tahun 2022")+
stat_summary(fun.y=median,geom="point",fill="blue",shape=21,size=2.5)
## Warning: The `fun.y` argument of `stat_summary()` is deprecated as of ggplot2 3.3.0.
## ℹ Please use the `fun` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
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"
)
#install dulu package devtools
#lepas tu, instal_github("rasyidstat/indonesia")
library(indonesia)
prov <- id_map("indonesia", "provinsi")
colnames(prov) <- c("Provinsi", "geometry")
prov_merge <- merge(prov, data1, by = "Provinsi")
## old-style crs object detected; please recreate object with a recent sf::st_crs()
library(ggplot2)
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()
library(viridis)
## Warning: package 'viridis' was built under R version 4.3.2
## Loading required package: viridisLite
## Warning: package 'viridisLite' was built under R version 4.3.2
ggplot(prov_merge) +
geom_sf(aes(fill = `Februari 2022`)) +
scale_fill_viridis_c(option = "F")
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 2023`)) +
scale_fill_gradient(high = c("orange","red"), low = "#FFEDD2")+
labs(title = "Tahun 2023")
library(dplyr)
library(ggplot2)
# Menambahkan kolom baru yang berisi rangking TPT yang diurutkan secara menurun
data3 <- data3 %>%
mutate(Ranking = rank(`Tahun 2022`))
# Filter 10 provinsi dengan tingkat pengangguran terbuka tertinggi
top10_provinsi <- data3 %>%
top_n(10, `Tahun 2022`)
# Memplot menggunakan ggplot2 dengan pengurutan berdasarkan Ranking dan memberi warna
ggplot(data = top10_provinsi,
aes(x = `Tahun 2022`, y = reorder(Provinsi, Ranking))) +
geom_point( color = "orange", size = 4) + # Menggunakan geom_point() untuk menampilkan titik
geom_segment(aes(xend = 0, yend = reorder(Provinsi, Ranking)), color = "#EF4040") + # Menggunakan geom_segment() untuk menghubungkan titik dengan sumbu x
geom_text(aes(label = `Tahun 2023`), hjust = -0.2, color = "black", size = 3) + # Menambahkan label
labs(title = "Tingkat Pengangguran Terbuka",
subtitle = "10 Provinsi dengan Tingkat Pengangguran Terbuka Tertinggi di Indonesia Tahun 2022",
caption = "Sumber: Badan Pusat Statistik", y = "Provinsi", x = "TPT (%)") +
theme_minimal() # Menambahkan tema minimal agar lebih mudah dibaca
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"
)
ggplot(data = data3) +
geom_density(aes(x = `Tahun 2022`, fill = "Tahun 2022"), color = "orange", alpha = 0.4) +
geom_density(aes(x = `Tahun 2023`, fill = "Tahun 2023"), color = "red", alpha = 0.4) +
labs(title = "Density Plot Sebaran Data Tingkat Pengangguran Terbuka Indonesia",
x = "TPT (%)",
y = "Jumlah") +
xlim(1, 10.2) +
scale_fill_manual(name="Tahun",
values = c("Tahun 2022" = "orange", "Tahun 2023" = "red"))
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 = 0, hjust = 0),
axis.text.y = element_text(size = 7)) +
labs(
title = "Tingkat Pengangguran Terbuka",
subtitle = "Tingkat Pengangguran Terbuka di Indonesia Tahun 2023",
caption = "Sumber: Badan Pusat Statistik",
y = "TPT",
x = "Provinsi"
)+
coord_flip()