# Fungsi untuk kategorisasi berdasarkan rata-rata dan standar deviasi untuk dua kolom
kategorisasi1 <- function(data, column_name1) {
# Hitung rata-rata dan standar deviasi untuk kolom pertama
mean_data1 <- mean(data[[column_name1]], na.rm = TRUE)
sd_data1 <- sd(data[[column_name1]], na.rm = TRUE)
# Tentukan batas kategori untuk kolom pertama
rendah_batas1 <- mean_data1 - sd_data1
tinggi_batas1 <- mean_data1 + sd_data1
# Kategorisasi untuk kolom pertama
kategori1 <- cut(data[[column_name1]],
breaks = c(-Inf, rendah_batas1, tinggi_batas1, Inf),
labels = c("Rendah", "Sedang", "Tinggi"))
# Menambahkan hasil kategori ke data frame
data$Kategori1 <- kategori1
}
kategorisasi2 <- function(data, column_name2) {
# Hitung rata-rata dan standar deviasi untuk kolom kedua
mean_data2 <- mean(data[[column_name2]], na.rm = TRUE)
sd_data2 <- sd(data[[column_name2]], na.rm = TRUE)
# Tentukan batas kategori untuk kolom kedua
rendah_batas2 <- mean_data2 - sd_data2
tinggi_batas2 <- mean_data2 + sd_data2
# Kategorisasi untuk kolom kedua
kategori2 <- cut(data[[column_name2]],
breaks = c(-Inf, rendah_batas2, tinggi_batas2, Inf),
labels = c("Rendah", "Sedang", "Tinggi"))
# Menambahkan hasil kategori ke data frame
data$Kategori2 <- kategori2
}
#Filter di Pulau Sumatra
data.SEEA2024 <- data.SEEA2024 %>%
filter(b2r10a_value == 1)
#Kategori untuk Pengeluaran Operasional Lingkungan
data.SEEA2024$b5cr3_number <- kategorisasi1(data.SEEA2024,"b5cr3_number")
#Kategori untuk Pendapatan
data.SEEA2024$jum_b4a_number <- as.numeric(data.SEEA2024$jum_b4a_number)
data.SEEA2024$jum_b4a_number <- kategorisasi2(data.SEEA2024,"jum_b4a_number")
# Membuat tabel kontingensi
tabulasi1.3 <- table(data.SEEA2024$b5cr3_number, data.SEEA2024$jum_b4a_number)
# Menambahkan nama baris dan kolom
rownames(tabulasi1.3) <- c("Rendah", "Sedang", "Tinggi")
colnames(tabulasi1.3) <- c("Rendah", "Sedang", "Tinggi")
# Menambahkan total baris dan kolom
tabulasi1.3 <- addmargins(tabulasi1.3, FUN = list(Total = sum))
## Margins computed over dimensions
## in the following order:
## 1:
## 2:
tabulasi1.3
##
## Rendah Sedang Tinggi Total
## Rendah 0 0 0 0
## Sedang 0 49 4 53
## Tinggi 0 3 2 5
## Total 0 52 6 58
library(networkD3)
## Warning: package 'networkD3' was built under R version 4.3.3
library(htmlwidgets)
## Warning: package 'htmlwidgets' was built under R version 4.3.2
##
## Attaching package: 'htmlwidgets'
## The following object is masked from 'package:networkD3':
##
## JS
# Data tabel kontingensi
tabulasi1.3 <- table(data.SEEA2024$b5cr3_number, data.SEEA2024$jum_b4a_number)
# Konversi ke data frame (format long)
sankey_data <- as.data.frame(as.table(tabulasi1.3))
# Menamai kolom
colnames(sankey_data) <- c("source", "target", "value")
# Membuat node (kategori unik)
nodes <- data.frame(name = c("Pengeluaran Operasional Lingkungan Rendah", "Pengeluaran Operasional Lingkungan Sedang", "Pengeluaran Operasional Lingkungan Tinggi","Pendapatan Rendah", "Pendapatan Sedang", "Pendapatan Tinggi"))
# Menambahkan indeks untuk setiap node
sankey_data$source_id <- c(0,1,2,0,1,2,0,1,2)
sankey_data$target_id <- c(3,3,3,4,4,4,5,5,5)
# Data frame untuk Sankey Diagram
links <- sankey_data[, c("source_id", "target_id", "value")]
#Pewarnaan
my_color <- 'd3.scaleOrdinal().domain(["Pengeluaran Operasional Lingkungan Rendah", "Pengeluaran Operasional Lingkungan Sedang", "Pengeluaran Operasional Lingkungan Tinggi","Pendapatan Rendah", "Pendapatan Sedang", "Pendapatan Tinggi"]).range(["#2F4A24", "#456438", "#679554", "#ABC28F", "#ECFAF2", "#837642"]);'
# Membuat Sankey Diagram
sankey <- sankeyNetwork(Links = links,
Nodes = nodes,
Source = "source_id",
Target = "target_id",
Value = "value",
NodeID = "name",
fontSize = 10,
nodeWidth = 30,
colourScale = my_color,
fontFamily = "Times New Roman")
# Menambahkan judul
sankey_with_title <- prependContent(
sankey,
htmltools::tags$h1(
"Diagram Sankey Pengeluaran Operasional Lingkungan dan Pendapatan",
style = "font-family: Courier; font-size: 14px; color: #333; text-align: center;"
)
)
# Tampilkan diagram
sankey_with_title
data.SEEA2024$b4dr2a_nilai <- as.numeric(data.SEEA2024$b4dr2a_nilai)
data.SEEA2024$b4dr2b_nilai <- as.numeric(data.SEEA2024$b4dr2b_nilai)
data.SEEA2024$b4dr2c_nilai <- as.numeric(data.SEEA2024$b4dr2c_nilai)
data.SEEA2024$b4dr2d_nilai <- as.numeric(data.SEEA2024$b4dr2d_nilai)
data.SEEA2024$b4dr2e_nilai <- as.numeric(data.SEEA2024$b4dr2e_nilai)
#Filter di Pulau Sumatra
data.SEEA2024 <- data.SEEA2024 %>%
filter(b2r10a_value == 1)
#Variabel baru
data.SEEA2024$jum_b4dr2 <- data.SEEA2024$b4dr2a_nilai + data.SEEA2024$b4dr2b_nilai + data.SEEA2024$b4dr2c_nilai + data.SEEA2024$b4dr2d_nilai + data.SEEA2024$b4dr2e_nilai
#Kategori untuk Efisiensi
data.SEEA2024$jum_b4dr2 <- kategorisasi1(data.SEEA2024,"jum_b4dr2")
#Kategori untuk Pendapatan
data.SEEA2024$jum_b4a_number <- as.numeric(data.SEEA2024$jum_b4a_number)
data.SEEA2024$jum_b4a_number <- kategorisasi2(data.SEEA2024,"jum_b4a_number")
# Membuat tabel kontingensi
tabulasi1.4 <- table(data.SEEA2024$jum_b4dr2, data.SEEA2024$jum_b4a_number)
# Menambahkan nama baris dan kolom
rownames(tabulasi1.4) <- c("Rendah", "Sedang", "Tinggi")
colnames(tabulasi1.4) <- c("Rendah", "Sedang", "Tinggi")
# Menambahkan total baris dan kolom
tabulasi1.4 <- addmargins(tabulasi1.4, FUN = list(Total = sum))
## Margins computed over dimensions
## in the following order:
## 1:
## 2:
tabulasi1.4
##
## Rendah Sedang Tinggi Total
## Rendah 0 0 0 0
## Sedang 0 50 6 56
## Tinggi 0 2 0 2
## Total 0 52 6 58
# Data tabel kontingensi
tabulasi1.4 <- table(data.SEEA2024$jum_b4dr2, data.SEEA2024$jum_b4a_number)
# Konversi ke data frame (format long)
sankey_data <- as.data.frame(as.table(tabulasi1.4))
# Menamai kolom
colnames(sankey_data) <- c("source", "target", "value")
# Membuat node (kategori unik)
nodes <- data.frame(name = c("Efisiensi Rendah", "Efisiensi Sedang", "Efisiensi Tinggi", "Pendapatan Rendah", "Pendapatan Sedang", "Pendapatan Tinggi"))
# Menambahkan indeks untuk setiap node
sankey_data$source_id <- c(0,1,2,0,1,2,0,1,2)
sankey_data$target_id <- c(3,3,3,4,4,4,5,5,5)
# Data frame untuk Sankey Diagram
links <- sankey_data[, c("source_id", "target_id", "value")]
#Pewarnaan
my_color <- 'd3.scaleOrdinal().domain(["Efisiensi Rendah", "Efisiensi Sedang", "Efisiensi Tinggi", "Pendapatan Rendah", "Pendapatan Sedang", "Pendapatan Tinggi"]).range(["#2F4A24", "#456438", "#679554", "#ABC28F", "#ECFAF2", "#837642"]);'
# Membuat Sankey Diagram
sankey <- sankeyNetwork(Links = links,
Nodes = nodes,
Source = "source_id",
Target = "target_id",
Value = "value",
NodeID = "name",
fontFamily = "Times New Roman",
fontSize = 10,
nodeWidth = 30,
colourScale = my_color,
sinksRight = TRUE)
# Menambahkan judul
sankey_with_title <- prependContent(
sankey,
htmltools::tags$h1(
"Diagram Sankey Efisiensi dan Pendapatan",
style = "font-family: Courier; font-size: 14px; color: #333; text-align: center;"
)
)
# Tampilkan diagram
sankey_with_title
my_color
## [1] "d3.scaleOrdinal().domain([\"Efisiensi Rendah\", \"Efisiensi Sedang\", \"Efisiensi Tinggi\", \"Pendapatan Rendah\", \"Pendapatan Sedang\", \"Pendapatan Tinggi\"]).range([\"#2F4A24\", \"#456438\", \"#679554\", \"#ABC28F\", \"#ECFAF2\", \"#837642\"]);"
#DBE7FF","#8985D6","#4A3D99","#DBE7FF","#3A3679 ","#1F155E"
#Filter di Pulau Sumatra
data.SEEA2024 <- data.SEEA2024 %>%
filter(b2r10a_value == 1)
#Kategori untuk Belanja Modal dan Belanja Modal Perlindungan Lingkungan
data.SEEA2024$kat1 <- kategorisasi1(data.SEEA2024,"b6ar7_number")
#Kategori untuk Belanja Modal Perlindungan Lingkungan
data.SEEA2024$jum_b6b <- data.SEEA2024$b6br1a + data.SEEA2024$b6br2a
data.SEEA2024$kat2 <- kategorisasi2(data.SEEA2024,"jum_b6b")
# Membuat tabel kontingensi
tabulasi1.5 <- table(data.SEEA2024$kat1, data.SEEA2024$kat2)
# Menambahkan nama baris dan kolom
rownames(tabulasi1.5) <- c("Rendah", "Sedang", "Tinggi")
colnames(tabulasi1.5) <- c("Rendah", "Sedang", "Tinggi")
# Menambahkan total baris dan kolom
tabulasi1.5 <- addmargins(tabulasi1.5, FUN = list(Total = sum))
## Margins computed over dimensions
## in the following order:
## 1:
## 2:
tabulasi1.5
##
## Rendah Sedang Tinggi Total
## Rendah 0 0 0 0
## Sedang 0 56 1 57
## Tinggi 0 1 0 1
## Total 0 57 1 58
# Data tabel kontingensi
tabulasi1.5 <- table(data.SEEA2024$kat1, data.SEEA2024$kat2)
# Konversi ke data frame (format long)
sankey_data <- as.data.frame(as.table(tabulasi1.5))
# Menamai kolom
colnames(sankey_data) <- c("source", "target", "value")
# Membuat node (kategori unik)
nodes <- data.frame(
name = c("Belanja Modal Rendah", "Belanja Modal Sedang", "Belanja Modal Tinggi", "Belanja Modal PL Rendah", "Belanja Modal PL Sedang", "Belanja Modal PL Tinggi"))
#Pewarnaan
my_color <- 'd3.scaleOrdinal().domain(["Belanja Modal Rendah","Belanja Modal Sedang", "Belanja Modal Tinggi","Belanja Modal PL Rendah", "Belanja Modal PL Sedang", "Belanja Modal PL Tinggi"]).range(["#2F4A24", "#456438", "#679554", "#ABC28F", "#ECFAF2", "#837642"]);'
# Menambahkan indeks untuk setiap node
sankey_data$source_id <- c(0,1,2,0,1,2,0,1,2)
sankey_data$target_id <- c(3,3,3,4,4,4,5,5,5)
# Data frame untuk Sankey Diagram
links <- sankey_data[, c("source_id", "target_id", "value")]
# Membuat Sankey Diagram
sankey <- sankeyNetwork(Links = links,
Nodes = nodes,
Source = "source_id",
Target = "target_id",
Value = "value",
NodeID = "name",
fontFamily = "Times New Roman",
fontSize = 10,
nodeWidth = 30,
colourScale = my_color)
# Menambahkan judul
sankey_with_title <- prependContent(
sankey,
htmltools::tags$h1(
"Diagram Sankey Belanja Modal dan Belanja Modal Perlindungan Lingkungan",
style = "font-family: Courier; font-size: 14px; color: #333; text-align: center;"
)
)
# Tampilkan diagram
sankey_with_title