Simulasi Proses Bisnis SEEA 2024

Function

# 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
}

1.1 Jumlah Perusahaan Berdasarkan Penerapan Sistem Pengelolaan Lingkungan (SPL)Menurut Provinsi di Pulau Sumatera.

#Library yang diperlukan
library(tidyr)
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(readxl)
library(ggplot2)
#Input Data
data.SEEA2024 <- read_excel("D:/Mata Kuliah STIS/Semester 5/Praktik Kuliah Lapangan/Penugasan 3/Clean Data Lembar Kerja Indepth SEEA.xlsx")

#Filter di Pulau Sumatra
data.SEEA2024 <- data.SEEA2024 %>%
  filter(grepl(("^[12]"), kdprov))
head(data.SEEA2024)
#Menghitung jumlah perusahaan yang menerapkan SPL
SPL <- data.SEEA2024 %>%
    filter(b2r10a_value == 1) %>%
    group_by(level_1_name) %>%
    summarise(Iya = n())
  
#Menghitung jumlah perusahaan yang tidak menerapkan SPL
NonSPL <- data.SEEA2024 %>%
    filter(b2r10a_value != 1) %>%
    group_by(level_1_name) %>%
    summarise(Tidak = n())
  
#Menggabungkan hasil SPL dan NonSPL
joint <- SPL %>%
    left_join(NonSPL, by = "level_1_name")
  
#Menghitung total perusahaan dan proporsi
tabulasi1.1 <- joint %>%
    mutate(Total = Iya + Tidak, Proporsi = Iya / Total)
tabulasi1.1

1.1.1 Bar Chart

# Menghitung proporsi SPL dan NonSPL
tabulasi1.1 <- tabulasi1.1 %>%
  mutate(Proporsi_SPL = Iya / Total, 
         Proporsi_NonSPL = Tidak / Total)

# Mengubah data ke format panjang (long format) untuk plot
tabulasi_long <- tabulasi1.1 %>%
  pivot_longer(cols = c(Proporsi_SPL, Proporsi_NonSPL), 
               names_to = "Category", values_to = "SUM")

# Membuat stacked bar chart proporsi (100%) dengan `position = "fill"`
ggplot(tabulasi_long, aes(x = level_1_name, y = SUM, fill = Category)) + # position = "fill" memastikan 100%
  geom_bar(stat = "identity") +  
  labs(x = "Provinsi", y = "Proporsi Perusahaan", title = "Proporsi SPL vs NonSPL di Pulau Sumatra") +
  scale_y_continuous(labels = scales::percent) + # Menampilkan y-axis dalam persen
  scale_fill_manual(values = c("Proporsi_SPL" = "#579554", "Proporsi_NonSPL" = "#ffab55")) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  # Agar label x-axis lebih mudah dibaca

1.1.2 Peta Tematik

library(sf)
## Warning: package 'sf' was built under R version 4.3.3
## Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE

1.2 Jumlah Perusahaan Berdasarkan Penerapan Sistem Pengelolaan Lingkungan (SPL) Menurut Lapangan Usaha di Pulau Sumatera.

#Menghitung jumlah perusahaan yang menerapkan SPL
SPL <- data.SEEA2024 %>%
    filter(b2r10a_value == 1) %>%
    group_by(b2r6_var) %>%
    summarise(Iya = n())
  
#Menghitung jumlah perusahaan yang tidak menerapkan SPL
NonSPL <- data.SEEA2024 %>%
    filter(b2r10a_value != 1) %>%
    group_by(b2r6_var) %>%
    summarise(Tidak = n())
  
#Menggabungkan hasil SPL dan NonSPL
joint <- SPL %>%
    left_join(NonSPL, by = "b2r6_var")
  
#Menghitung total perusahaan dan proporsi
tabulasi1.2 <- joint %>%
    mutate(Total = Iya + Tidak, Proporsi = Iya / Total)
tabulasi1.2

1.2.1 Bar Chart

# Menghitung proporsi SPL dan NonSPL
tabulasi1.2 <- tabulasi1.2 %>%
  mutate(Proporsi_SPL = Iya / Total, 
         Proporsi_NonSPL = Tidak / Total)

# Mengubah data ke format panjang (long format) untuk plot
tabulasi_long <- tabulasi1.2 %>%
  pivot_longer(cols = c(Proporsi_SPL, Proporsi_NonSPL), 
               names_to = "Category", values_to = "SUM")

# Membuat stacked bar chart proporsi (100%) dengan `position = "fill"`
ggplot(tabulasi_long, aes(x = b2r6_var, y = SUM, fill = Category)) + # position = "fill" memastikan 100%
  geom_bar(stat = "identity") +  
  labs(x = "Provinsi", y = "Proporsi Perusahaan", title = "Proporsi SPL vs NonSPL di Pulau Sumatra") +
  scale_y_continuous(labels = scales::percent) + # Menampilkan y-axis dalam persen
  scale_fill_manual(values = c("Proporsi_SPL" = "#579554", "Proporsi_NonSPL" = "#ffab55")) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 0, hjust = 1))  # Agar label x-axis lebih mudah dibaca

1.3 Tabel Kontingensi Pengeluran Operasional Lingkungan dan Pendapatan.

#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

1.3.1 Sankey Diagram

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

Diagram Sankey Pengeluaran Operasional Lingkungan dan Pendapatan

1.4 Tabel Kontingensi Efisiensi dan Pendapatan di Pulau Sumatra

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

1.4.1 Sankey Diagram

# 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

Diagram Sankey Efisiensi dan Pendapatan

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"

1.5 Tabel Kontingensi Belanja Modal dan Belanja Modal Perlindungan Lingkungan di Pulau Sumatra

#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

1.5.1 Sankey Diagram

# 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

Diagram Sankey Belanja Modal dan Belanja Modal Perlindungan Lingkungan