How To Use My Package - ctablerseh ini saya tulis untuk menjadi panduan bagi orang-orang yang akan melakukan estimasi data survei seperti SUSENAS (Survei Sosial Ekonomi Nasional) Kor Maret 2024 dan ingin memiliki output yang sama dengan SPSS dalam hal estimasi, RSE, dan confidence intervalnya.
Bagian utama dari proses ini adalah penggunaan Package “ctablerseh” yang dibuat oleh Asy-Syaja’ul Haqqul Amin untuk membantu orang-orang mengolah data survei yang sebelumnya telah terbiasa dengan SPSS.
Oleh karena itu, langkah-langkah yang dilakukan hanya ada 8 tahapan yakni:
library(foreign)
data = read.spss("KOR24GAB.sav",to.data.frame = T, use.value.labels = F)
## re-encoding from CP1252
#View(data)
Data yang digunakan adalah “Data Contoh” sehingga nilai estimasinya tidak sama dengan nilai resmi yang dirilis.
Target yang dibuat menyesuaikan kebutuhan pengguna. Namun dalam tulisan ini diberikan 3 contoh target dengan bentuk estimasi yang berbeda yakni Proposi (target 1), Rasio (target 2) dan Rata-rata (target 3).
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
data = data %>% select(-INDI,-U2024) #baris ini saya gunakan karena dataset awal sudah mengandung variabel ini shg perlu saya hapus
# Mengubah nilai R407 menjadi 1 jika dalam rentang 20 hingga 24
data$U2024 <- ifelse(data$R407 >= 20 & data$R407 <= 24, 1, NA)
# Menginisialisasi variabel INDI
data$INDI <- NA
# Mengatur INDI berdasarkan kondisi yang diberikan
data$INDI[data$U2024 == 1 & data$R405 == 2] <- 0
data$INDI[data$U2024 == 1 & data$R405 == 2 & data$R409 < 15] <- 100
#library(tidyverse)
data = data %>% select(-U712,-XSD) #baris ini saya gunakan karena dataset awal sudah mengandung variabel ini shg perlu saya hapus
# Mengubah nilai variabel sesuai rentang
data$U712 <- ifelse(data$R407 >= 7 & data$R407 <= 12, 1, NA)
data$XSD <- ifelse(data$R612 >= 1 & data$R612 <= 5, 1, NA)
# Menginisialisasi variabel INDI untuk Penyebut
data$INDI_PENYEBUT <- 0
data$INDI_PENYEBUT[data$U712 == 1] <- 1
# Menginisialisasi variabel INDI untuk Pembilang
data$INDI_PEMBILANG <- 0
data$INDI_PEMBILANG[data$R610 == 2 & data$XSD == 1] <- 100
library(tidyverse)
data = data %>% select(-JENJANG,-IJASAH) #baris ini saya gunakan karena dataset awal sudah mengandung variabel ini shg perlu saya hapus
data = data %>% select(-TAMT,-RLS) #baris ini saya gunakan karena dataset awal sudah mengandung variabel ini shg perlu saya hapus
# Mengubah nilai
library(dplyr)
data <- data %>%
mutate(JENJANG = case_when(
R612 >= 1 & R612 <= 5 ~ 1,
R612 >= 6 & R612 <= 10 ~ 2,
R612 >= 11 & R612 <= 17 ~ 3,
R612 == 18 ~ 4,
R612 == 19 ~ 5,
R612 == 20 ~ 6,
R612 == 21 ~ 7,
R612 == 23 ~ 8,
R612 == 24 ~ 9,
R612 == 22 ~ 10,
TRUE ~ NA_real_
)
)
data <- data %>%
mutate(IJASAH = case_when(
R614 == 25 ~ 1,
R614 >= 1 & R614 <= 5 ~ 2,
R614 >= 6 & R614 <= 10 ~ 3,
R614 >= 11 & R614 <= 17 ~ 4,
R614 == 18 ~ 5,
R614 == 19 ~ 6,
R614 == 20 ~ 7,
R614 == 21 ~ 8,
R614 == 23 ~ 9,
R614 == 24 ~ 10,
R614 == 22 ~ 11,
TRUE ~ NA_real_ # Untuk menangani nilai lain sebagai NA
))
data <- data %>%
mutate(TAMT = case_when(
IJASAH == 1 ~ 0,
IJASAH == 2 ~ 6,
IJASAH == 3 ~ 9,
IJASAH == 4 ~ 12,
IJASAH == 5 ~ 14,
IJASAH == 6 ~ 15,
IJASAH == 7 ~ 16,
IJASAH == 8 ~ 17,
IJASAH == 9 ~ 19,
IJASAH == 10 ~ 22,
IJASAH == 11 ~ 18,
TRUE ~ NA_real_ # Menangani nilai lain sebagai NA
))
data <- data %>%
mutate(RLS = case_when(
R610 == 1 ~ 0,
# Kondisi khusus untuk jenjang pendidikan tertentu
R610 == 2 & JENJANG == 4 & IJASAH == 5 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 5 & IJASAH == 6 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 6 & IJASAH == 7 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 7 & IJASAH == 8 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 7 & IJASAH == 9 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 8 & IJASAH == 9 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 7 & IJASAH == 10 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 8 & IJASAH == 10 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 9 & IJASAH == 10 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 8 & IJASAH == 7 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 8 & IJASAH == 8 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 9 & IJASAH == 9 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 10 & IJASAH == 7 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 10 & IJASAH == 8 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 10 & IJASAH == 9 & R613 < 8 ~ TAMT,
R610 == 2 & JENJANG == 8 & IJASAH == 11 & R613 < 8 ~ TAMT,
R610 == 3 & JENJANG == 8 & IJASAH == 9 & R613 < 8 ~ TAMT,
R610 == 3 & JENJANG == 8 & IJASAH == 7 & R613 < 8 ~ TAMT,
R610 == 3 & JENJANG == 8 & IJASAH == 8 & R613 < 8 ~ TAMT,
R610 == 3 & JENJANG == 9 & IJASAH == 9 & R613 < 8 ~ TAMT,
R610 == 3 & JENJANG == 9 & IJASAH == 10 & R613 < 8 ~ TAMT,
R610 == 3 & JENJANG == 8 & IJASAH == 11 & R613 < 8 ~ TAMT,
# Kondisi umum untuk R610 == 2 atau 3
(R610 == 2 | R610 == 3) & R613 < 8 ~ TAMT + R613 - 1,
(R610 == 2 | R610 == 3) & R613 == 8 ~ TAMT,
TRUE ~ NA_real_ # Menangani kasus lainnya sebagai NA
))
maka perlu membuat variabel baru dengan nilai label yang sama untuk semua amatan sebagai penanda bahwa semua amatan termasuk dalam kelompok yang sama yakni INDONESIA
#library(tidyverse)
data <- data %>%
mutate(R105_R101 = paste(R105, R101, sep = "_"), #variabel untuk provinsi dan klasifikasi desa-kota
R405_R105_R101 = paste(R405, R105, R101, sep = "_"), #variabel untuk provinsi, klasifikasi desa-kota dan jenis kelamin
RNAS = 1) #variabel untuk nasional
data <- data %>%
mutate(strata= R101*1000 + R105, #setara strata yakni gabungan R101 dan R105
cluster= R102*100000000000 + WI1*1000000 + WI2)#setara cluster yakni gabungan R102 + WI1 + WI2
# subset(data, !is.na(INDI))
tidak perlu memilih subset karena seluruh data sudah bernilai dan sesuai kriteria, mengingat bahwa ini adalah estimasi rasio dari total penduduk bersekolah SD dibagi total penduduk usia 7-12 tahun sehingga hanya mengandalkan pembagian antara banyaknya amatan yang diberi nilai 100 pada INDI_PEMBILANG dengan INDI_PENYEBUT karena sesuai dengan kondisi tersebut
# subset(data, R407 >= 15)
susenas.design1<- survey::svydesign(id=~cluster,
strata=~strata,
data = subset(data, !is.na(INDI)),
weights=~FWT)
susenas.design2<- survey::svydesign(id=~cluster,
strata=~strata,
data = data,
weights=~FWT)
susenas.design3<- survey::svydesign(id=~cluster,
strata=~strata,
data = subset(data, R407 >= 15),
weights=~FWT)
library(ctablerseh)
library(writexl)
data_list1 <- list(
UPP15_nas = target1_nas,
UPP15_prov = target1_prov
)
write_xlsx(data_list1, "TARGET 1. SDGs 5.3.1. (a) Proporsi Perempuan umur 20-24 tahun yang umur perkawinan pertama atau umur hidup bersama sebelum umur 15 tahun.xlsx")
data_list2 <- list(
APK_SD_nas = target2_nas,
APK_SD_prov = target2_prov,
APK_SD_prov_kd = target2_prov_kd
)
write_xlsx(data_list2, "TARGET 2. APK SD.xlsx")
data_list3 <- list(
RLS15_nas = target3_nas,
RLS15_prov = target3_prov,
RLS15_prov_kd = target3_prov_kd,
RLS15_prov_kd_jk = target3_prov_kd_jk
)
write_xlsx(data_list3, "TARGET 3. RLS usia 15 ke atas.xlsx")