Pendataan BTKT dilakukan untuk memahami tingkat partisipasi, peran, pemahaman, serta tantangan yang dihadapi oleh Pokja dalam proses pengumpulan data. Analisis ini bertujuan untuk mengidentifikasi:
# LOAD PACKAGE
library(googlesheets4)
library(tidyverse)
library(janitor)
library(tm)
library(RColorBrewer)
library(ggplot2)
library(dplyr)
library(tidyr)
library(stringr)
# 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
# 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
# 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
# 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
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)