Pendahuluan

Pendataan BTKT dilakukan untuk memahami tingkat partisipasi, peran, pemahaman, serta tantangan yang dihadapi oleh Pokja dalam proses pengumpulan data. Analisis ini bertujuan untuk mengidentifikasi:

  1. Frekuensi keterlibatan dalam pendataan.
  2. Peran dan pemahaman aktor.
  3. Kompetensi serta tantangan yang dialami.
  4. Rekomendasi pelatihan dan pendampingan.

Tujuan

  1. Menyajikan ringkasan data hasil survei pendataan.
  2. Mengetahui distribusi jawaban responden dalam bentuk tabel dan grafik sederhana.
  3. Memberikan dasar rekomendasi perbaikan kapasitas Pokja.

# LOAD PACKAGE
library(googlesheets4)
library(tidyverse)
library(janitor)
library(tm)
library(RColorBrewer)
library(ggplot2)
library(dplyr)
library(tidyr)
library(stringr)

1. Persiapan Data

# BACA DATA DARI GOOGLE SHEETS
url <- "https://docs.google.com/spreadsheets/d/1Ky6yDkhCKvsisfNaeOlBZMrW1dKkC2nuCDGBhnKAZjo/edit#gid=398031140"

googlesheets4::gs4_auth() # untuk login akun google

data <- read_sheet(url) %>% 
  clean_names()

glimpse(data)   # cek struktur kolom
## Rows: 12
## Columns: 55
## $ username                       <chr> "ypi", "ypi", "ypi", "ypi", "ypi", "ypi…
## $ lokasi                         <chr> "Dawar", "Dawar", "Dawar", "Dawar", "Da…
## $ a1                             <chr> "Nevan", "Kopi Cristiani", "Asmarita Gl…
## $ a2                             <chr> "Dahan (ketua punk)", "Pokja KS", "Lite…
## $ a3                             <chr> "Ketua", "Ketua", "Ketua", "Ketua", "Ke…
## $ lainnya                        <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ a4                             <chr> "2 tahun lebih", "5 Lebih kurang lebih"…
## $ b1                             <chr> "Sangat_sering", "Sangat_sering", "Jara…
## $ b2                             <chr> "Anggota_Pokja", "Anggota_Pokja", "Lain…
## $ b2_anggota_pokja               <dbl> 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1
## $ b2_ketua_btkt                  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
## $ b2_ff                          <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
## $ b2_lainnya                     <dbl> 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0
## $ lainnya_pendataan_kelompok     <chr> NA, NA, "Ketua Pokja Literasinya", NA, …
## $ b3                             <chr> "Sangat_paham", "Sangat_paham", "Sangat…
## $ b3_1                           <chr> "Untuk sebagai bahan evaluasi,", "Biar …
## $ b4                             <chr> "Sering_melihat", "Sering_melihat", "Ti…
## $ b5                             <chr> "Lainnya", "Lainnya", "Lainnya", "Rapat…
## $ lainnya_pertemuan              <chr> "Setiap bulan setelah pokja mengambil d…
## $ b6                             <chr> "Cukup_menguasai", "Sangat_menguasai", …
## $ b7                             <chr> "Cukup_menguasai", "Kurang_menguasai", …
## $ b8                             <chr> "Cukup_menguasai", "Kurang_menguasai", …
## $ b9                             <chr> "Sangat_menguasai", "Cukup_menguasai", …
## $ b10                            <chr> "Kurang_menguasai", "Cukup_menguasai", …
## $ c1                             <chr> "Selalu_hadir", "Selalu_hadir", "Kadang…
## $ c2                             <chr> "Hampir setiap bulan ikut terlibat dala…
## $ c3                             <chr> "Sangat_membantu", "Sangat_membantu", "…
## $ c4                             <chr> "Membantu dalam memberikan arahan dan p…
## $ c5                             <chr> "Penggunaan_alat Penguatan_pemahaman_da…
## $ c5_teknis_pengisian_data       <dbl> 0, 1, 0, 1, 1, 1, 0, 1, NA, NA, NA, NA
## $ c5_penggunaan_alat             <dbl> 1, 1, 1, 1, 1, 1, 0, 1, NA, NA, NA, NA
## $ c5_penguatan_pemahaman_data    <dbl> 1, 1, 0, 0, 0, 0, 0, 0, NA, NA, NA, NA
## $ c5_pendampingan_lebih_sering   <dbl> 0, 0, 0, 1, 0, 0, 1, 0, NA, NA, NA, NA
## $ c5_lainnya                     <dbl> 0, 0, 0, 0, 0, 0, 0, 0, NA, NA, NA, NA
## $ lainnya_bidang                 <chr> NA, NA, NA, NA, NA, NA, NA, NA, "pendam…
## $ d1                             <chr> "Anggota_Pokja_Pendataan", "Anggota_Pok…
## $ lainnya_siapa                  <chr> NA, NA, NA, NA, NA, NA, NA, NA, "Sila",…
## $ d2                             <chr> "input_data_digital Analisis_data", "Pe…
## $ d2_pengisian_formulir          <dbl> 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0
## $ d2_input_data_digital          <dbl> 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0
## $ d2_analisis_data               <dbl> 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1
## $ d2_penyusunan_sistem_pelaporan <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
## $ d2_lainnya                     <dbl> 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
## $ lainnya_pelatihan              <chr> NA, NA, "Cara mengajar, terlebih mengaj…
## $ d3                             <chr> "Data harus lebih dirapikan lagi, disip…
## $ id                             <dbl> 536369950, 536369953, 536369958, 536369…
## $ uuid                           <chr> "909f7781-7aec-4df8-a94d-95f46878f3d3",…
## $ submission_time                <dttm> 2025-08-11 02:52:34, 2025-08-11 02:52:3…
## $ validation_status              <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ notes                          <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ status                         <chr> "submitted_via_web", "submitted_via_web…
## $ submitted_by                   <chr> "ypi", "ypi", "ypi", "ypi", "ypi", "ypi…
## $ version                        <chr> "v7UjF4ZNgTbqqQkNGNfmgJ", "v7UjF4ZNgTbq…
## $ tags                           <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ index                          <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

2. Analisis Proses Pendataan

# Frekuensi (B1)
b1_summary <- data %>%
  count(b1) %>%
  mutate(persen = n/sum(n)*100)
b1_summary
## # A tibble: 3 × 3
##   b1                          n persen
##   <chr>                   <int>  <dbl>
## 1 Cukup_sering                2  16.7 
## 2 Jarang_(1 kali_setahun)     1   8.33
## 3 Sangat_sering               9  75
# Siapa pencatat (B2 - dummy variabel)
b2_summary <- data %>%
  select(starts_with("b2_")) %>%
  summarise(across(everything(), ~sum(.x, na.rm=TRUE))) %>%
  pivot_longer(everything(), names_to="aktor", values_to="jumlah") %>%
  mutate(persen = jumlah/sum(jumlah)*100)
b2_summary
## # A tibble: 4 × 3
##   aktor            jumlah persen
##   <chr>             <dbl>  <dbl>
## 1 b2_anggota_pokja      9     75
## 2 b2_ketua_btkt         0      0
## 3 b2_ff                 0      0
## 4 b2_lainnya            3     25
# Pemahaman tujuan (B3)
b3_summary <- data %>%
  count(b3) %>%
  mutate(persen = n/sum(n)*100)
b3_summary
## # A tibble: 4 × 3
##   b3               n persen
##   <chr>        <int>  <dbl>
## 1 Cukup_paham      4   33.3
## 2 Kurang_paham     3   25  
## 3 Sangat_paham     3   25  
## 4 Tidak_paham      2   16.7

3. ANALISIS TANTANGAN

# Kompetensi (B6–B10)
kompetensi <- data %>%
  select(b6:b10) %>%
  pivot_longer(everything(), names_to="aspek", values_to="jawaban") %>%
  filter(!is.na(jawaban)) %>%             # hapus jawaban NA
  count(aspek, jawaban) %>%
  group_by(aspek) %>%
  mutate(persen = n/sum(n)*100)
kompetensi
## # A tibble: 14 × 4
## # Groups:   aspek [5]
##    aspek jawaban              n persen
##    <chr> <chr>            <int>  <dbl>
##  1 b10   Cukup_menguasai      2  16.7 
##  2 b10   Kurang_menguasai    10  83.3 
##  3 b6    Cukup_menguasai      6  50   
##  4 b6    Kurang_menguasai     2  16.7 
##  5 b6    Sangat_menguasai     4  33.3 
##  6 b7    Cukup_menguasai      7  58.3 
##  7 b7    Kurang_menguasai     2  16.7 
##  8 b7    Sangat_menguasai     3  25   
##  9 b8    Cukup_menguasai      4  33.3 
## 10 b8    Kurang_menguasai     6  50   
## 11 b8    Tidak_menguasai      2  16.7 
## 12 b9    Cukup_menguasai      8  66.7 
## 13 b9    Kurang_menguasai     3  25   
## 14 b9    Sangat_menguasai     1   8.33
# Tantangan pendampingan (C5 - dummy variabel)
c5_summary <- data %>%
  select(starts_with("c5_")) %>%
  summarise(across(everything(), ~sum(.x, na.rm=TRUE))) %>%
  pivot_longer(everything(), names_to="tantangan", values_to="jumlah") %>%
  mutate(persen = jumlah/sum(jumlah)*100)
c5_summary
## # A tibble: 5 × 3
##   tantangan                    jumlah persen
##   <chr>                         <dbl>  <dbl>
## 1 c5_teknis_pengisian_data          5   31.2
## 2 c5_penggunaan_alat                7   43.8
## 3 c5_penguatan_pemahaman_data       2   12.5
## 4 c5_pendampingan_lebih_sering      2   12.5
## 5 c5_lainnya                        0    0

4. REKOMENDASI

# Siapa perlu dilatih (D1)
d1_summary <- data %>%
  count(d1) %>%
  mutate(persen = n/sum(n)*100)
d1_summary
## # A tibble: 3 × 3
##   d1                          n persen
##   <chr>                   <int>  <dbl>
## 1 Anggota_Pokja_Pendataan    10  83.3 
## 2 Lainnya                     1   8.33
## 3 Pengurus                    1   8.33
# Jenis pelatihan penting (D2 - dummy variabel)
d2_summary <- data %>%
  select(starts_with("d2_")) %>%
  summarise(across(everything(), ~sum(.x, na.rm=TRUE))) %>%
  pivot_longer(everything(), names_to="pelatihan", values_to="jumlah") %>%
  mutate(persen = jumlah/sum(jumlah)*100)
d2_summary
## # A tibble: 5 × 3
##   pelatihan                      jumlah persen
##   <chr>                           <dbl>  <dbl>
## 1 d2_pengisian_formulir               4  21.1 
## 2 d2_input_data_digital               9  47.4 
## 3 d2_analisis_data                    5  26.3 
## 4 d2_penyusunan_sistem_pelaporan      0   0   
## 5 d2_lainnya                          1   5.26

5. VISUALISASI

B1 → bar chart frekuensi pendataan B2 → bar chart siapa pencatat B3 → bar chart pemahaman B6 - B10 → Kompetensi C5 → bar chart Tantangan Pendampinga D1 → pie chart siapa perlu dilatih D2 → bar chart jenis pelatihan

# definisi palet warna alam/hutan
forest_palette <- c("#2E4600", "#486B00", "#A2C523", "#7D4427", "#D9CEB2", "#3B8686", "#79BD9A")
# --- 1. Frekuensi Pendataan (B1) ---
labels_b1 <- c(
  "Sangat_sering"            = "Sangat Sering",
  "Cukup_sering"             = "Cukup Sering",
  "Jarang_(1 kali_setahun)"  = "Jarang (1 kali setahun)"
)

plot_b1 <- ggplot(b1_summary, aes(x = factor(b1, levels = c("Sangat_sering", "Cukup_sering", "Jarang_(1 kali_setahun)")),
                                  y = persen, fill = b1)) +
  geom_col() +
  geom_text(aes(label = paste0(round(persen,1), "%")), vjust = -0.5) +
  scale_fill_manual(values = forest_palette, labels = labels_b1) +
  scale_x_discrete(labels = labels_b1) +
  labs(title = "Frekuensi Proses Pendataan (B1)", 
       x = NULL, y = "Persentase (%)") +
  theme_minimal() +
  theme(legend.position = "none")
plot_b1

# --- 2. Siapa Pencatat (B2) ---
labels_b2 <- c(
  "b2_anggota_pokja" = "Anggota Pokja",
  "b2_ketua_btkt"    = "Ketua BTKT",
  "b2_ff"            = "Field Facilitator",
  "b2_lainnya"       = "Lainnya"
)

plot_b2 <- ggplot(b2_summary, aes(x = reorder(aktor, -persen), y = persen, fill = aktor)) +
  geom_col() +
  geom_text(aes(label = paste0(round(persen,1), "%")), vjust = -0.5) +
  scale_fill_manual(values = forest_palette) +
  scale_x_discrete(labels = labels_b2) +
  labs(title = "Siapa Pencatat Data (B2)", 
       x = NULL, y = "Persentase (%)") +
  theme_minimal() +
  theme(legend.position = "none")
plot_b2

# --- 3. Pemahaman Tujuan Pendataan (B3) ---
labels_b3 <- c(
  "Sangat_paham" = "Sangat Paham",
  "Cukup_paham"  = "Cukup Paham",
  "Kurang_paham" = "Kurang Paham",
  "Tidak_paham"  = "Tidak Paham"
)

plot_b3 <- ggplot(b3_summary, aes(x = reorder(b3, -persen), y = persen, fill = b3)) +
  geom_col() +
  geom_text(aes(label = paste0(round(persen,1), "%")), vjust = -0.5) +
  scale_fill_manual(values = forest_palette) +
  scale_x_discrete(labels = labels_b3) +
  labs(title = "Pemahaman Tujuan Pendataan (B3)", 
       x = NULL, y = "Persentase (%)") +
  theme_minimal() +
  theme(legend.position = "none")
plot_b3

# --- 4. Kompetensi B6–B10 ---
label_aspek <- c(
  "b6" = str_wrap("B6 - Mengisi formulir data lapangan", width = 25),
  "b7" = str_wrap("B7 - Menginput data ke buku/catatan", width = 25),
  "b8" = str_wrap("B8 - Menginput data ke digital (Excel/G-Form)", width = 25),
  "b9" = str_wrap("B9 - Memahami arti/tujuan data yang dikumpulkan", width = 25),
  "b10" = str_wrap("B10 - Menggunakan data untuk diskusi/umpan balik", width = 25)
)

kompetensi <- kompetensi %>%
  dplyr::mutate(aspek = factor(aspek, levels = c("b6","b7","b8","b9","b10")))

plot_b6_b10 <- ggplot(kompetensi, aes(x = aspek, y = persen, fill = jawaban)) +
  geom_col(position = "stack") +
  geom_text(aes(label = paste0(round(persen, 1), "%")),
            position = position_stack(vjust = 0.5), size = 3, color="white") +
  scale_fill_manual(values = forest_palette) +
  scale_x_discrete(labels = label_aspek) +
  labs(title = "Tingkat Kemampuan berdasarkan konteks B6–B10",
       x = "Aspek Kemampuan", y = "Persentase", fill = "Kategori Jawaban") +
  theme_minimal() +
  coord_flip()
plot_b6_b10

# --- 5. Tantangan (C5) ---
labels_c5 <- c(
  "c5_teknis_pengisian_data"   = "Teknis Pengisian Data",
  "c5_penggunaan_alat"         = "Penggunaan Alat",
  "c5_penguatan_pemahaman_data"= "Penguatan Pemahaman Data",
  "c5_pendampingan_lebih_sering" = "Pendampingan Lebih Sering",
  "c5_lainnya"                 = "Lainnya"
)

plot_c5 <- ggplot(c5_summary, aes(x = reorder(tantangan, -persen), 
                                           y = persen, fill = tantangan)) +
  geom_col() +
  geom_text(aes(label = paste0(round(persen,1), "%")), vjust=-0.5) +
  scale_fill_manual(values = forest_palette) +
  scale_x_discrete(labels = labels_c5) +
  labs(title = "Tantangan dalam Pendampingan (C5)", 
       x = NULL, y = "Persentase (%)") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 30, hjust = 1),
        legend.position = "none")
plot_c5

# --- 6. Target Penerima Pelatihan (D1) ---
labels_d1 <- c(
  "Anggota_Pokja_Pendataan" = "Anggota Pokja Pendataan",
  "Pengurus" = "Pengurus BTKT",
  "Lainnya" = "Kategori Lainnya"
)

plot_d1 <- ggplot(d1_summary, aes(x = "", y = persen, fill = d1)) +
  geom_bar(stat="identity", width=1) +
  coord_polar("y") +
  geom_text(aes(label = paste0(round(persen,1), "%")),
            position=position_stack(vjust=0.5), color="white") +
  scale_fill_manual(values = forest_palette,
                    labels = labels_d1,
                    breaks = names(labels_d1)) +
  labs(title = "Target Penerima Pelatihan (D1)", fill = "Kategori") +
  theme_void()
plot_d1

# --- 7. Jenis Pelatihan (D2) ---
label_pelatihan <- c(
  "d2_pengisian_formulir"      = "Pengisian Formulir",
  "d2_input_data_digital"      = "Input Data Digital",
  "d2_analisis_data"           = "Analisis Data",
  "d2_penyusunan_sistem_pelaporan" = "Penyusunan Sistem Pelaporan",
  "d2_lainnya"                 = "Lainnya"
)

plot_d2 <- d2_summary %>% 
  filter(persen > 0) %>% 
  ggplot(aes(x = reorder(pelatihan, -persen), y = persen, fill = pelatihan)) +
  geom_col() +
  geom_text(aes(label = paste0(round(persen, 1), "%")), vjust = -0.5) +
  scale_fill_manual(values = forest_palette) +
  scale_x_discrete(labels = label_pelatihan) +
  labs(title = "Jenis Pelatihan yang Dibutuhkan (D2)", 
       x = NULL, y = "Persentase (%)") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 30, hjust = 1),
        legend.position = "none")
plot_d2

# --- 8. Export hasil plot ---

library(ggplot2)
library(dplyr)
library(stringr)

# Folder output (bisa ganti sesuai kebutuhan)
output_dir <- "output_plots"
if (!dir.exists(output_dir)) dir.create(output_dir)

ggsave(file.path(output_dir, "1. Plot B1_Frekuensi_Pendataan.png"), plot_b1, width = 7, height = 5)
ggsave(file.path(output_dir, "2. B2_Siapa_Pencatat.png"), plot_b2, width = 7, height = 5)
ggsave(file.path(output_dir, "3. B3_Pemahaman_Tujuan.png"), plot_b3, width = 7, height = 5)
ggsave(file.path(output_dir, "4. B6_B10_Kompetensi.png"), plot_b6_b10, width = 8, height = 6)
ggsave(file.path(output_dir, "5. C5_Tantangan.png"), plot_c5, width = 7, height = 5)
ggsave(file.path(output_dir, "6. D1_Siapa_Perlu_Dilatih.png"), plot_d1, width = 6, height = 6)
ggsave(file.path(output_dir, "7. D2_Jenis_Pelatihan.png"), plot_d2, width = 7, height = 5)