Introduction
Kemampuan untuk menghimpun dan mengevaluasi data survei dengan sederhana sangatlah krusial. Terdapat berbagai platform yang menyediakan alat yang user-friendly untuk melaksanakan tugas ini, seperti Google Forms, SurveyMonkey, dan Qualtrics yang merupakan opsi yang populer. Namun, seringkali sulit untuk mengintegrasikan layanan-layanan tersebut dengan proses analisis data yang sudah ada maupun dengan jalur penelitian yang sedang dilakukan. Di R sendiri terdapat sebuah package bernama {shinysurveys} yang dapat digunakan untuk membuat survei yang terintegrasi langsung dengan R.
{shinysurveys} merupakan sebuah package yang dikembangkan oleh Jonathan Tratnerr yang terinspirasi oleh {shinyforms} yang dikembangkan oleh Dean Attali’s. package ini membuat survei dengan tampilan yang mirip seperti Google Forms dengan menggunakan kode yang minimalis dan mudah untuk digunakan.
pada blog ini kita akan mengenal dan memahami langkah-langkah dasar untuk membuat survei sederhana menggunakan package{shinysurveys}.
Instalasi
Untuk menggunakannya tentu kita perlu untuk menginstall packagenya terlebih dahulu, kita bisa melakukannya dengan 2 cara berikut ini
|
|
Memulai Sebuah Survei
Parameter shinysurveys
Untuk memulai membuat survei dengan {shinysurveys}, kita perlu mengenal dua fungsi utama yang akan digunakan dalam pembuatan survey:
1. surveyOutput()
surveyOutput() digunakan dalam antarmuka pengguna (UI) aplikasi Shiny, dengan parameter:
df: merupakan data frame yang berisi pertanyaan yang kita buat.survey_title: judul survei yang kita buat.survey_description: informasi berupa deskripsi dari survei yang kita buat.
2. renderSurvey()
renderSurvey() adalah sebuah fungsi yang dijalankan di dalam server agar form yang kita buat dapat ditampilkan.
Membuat Pertanyaan
Untuk membuat sebuah survei kita perlu menyusun pertanyaan kita kedalam sebuah data frame dengan beberapa kolom berikut ini:
question: berisi pertanyaan yang ingin kita ajukanoption: berisi kemungkinan jawaban dari pertanyaan yang kita ajukaninput_type: tipe dari respon/jawaban yang diharapkan, untuk saat ini hanya mendukung tipe:- numeric : untuk respon/jawaban berupa angka
- mc : untuk respon/jawaban berupa pilihan ganda
- text : untuk respon/jawaban berupa teks
- select : untuk respon/jawaban berupa pilihan tunggal
- y/n : untuk respon/jawaban berupa yes/no
input_id: id pertanyaan untuk shiny inputdependence: apakah pertanyaan ini bergantung pada pertanyaan lainnya?, kolom ini berisi NA atau input_id dari pertanyaandependence_value: jawaban spesifik dari pertanyaan yang menjadi syaratrequired: berisi nilai TRUE/FALSE yang mengidentigfikasi pertanyaan ini harus dijawab atau tidak
Menjalankan shinysurveys
untuk menjalankan shinysurveys kita perlu menggunakan dua package dalam menyusun sebuah aplikasi shiny yakni package shiny dan package shinysurveys. Berikut ini adalah contoh sederhana pembuatan sebuah survei dengan shinysurveys dengan satu pertanyaan
|
|
Disclaimer: Untuk code diatas merupakan sebuah code shinyapp sehingga harap dijalankan pada R.script.
dan berikut ini adalah hasil yang akan ditampilkan dari survei yang telah kita buat dengan satu pertanyaan:
Membuat Lebih dari Satu Pertanyaan
Apabila kita hendak membuat lebih dari satu pertanyaan maka pada pembuatan dataframe untuk setiap kolom kita perlu membuat pertanyaan kita kedalam sebuah list. sebagai contoh seperti berikut:
|
|
untuk menjalankannya kita hanya perlu mengubah nilai parameter df pada surveyOutput menggunakan dataframe pertanyaan df2
|
|
Disclaimer: Untuk code diatas merupakan sebuah code shinyapp sehingga harap dijalankan pada R.script tidak pada R.Markdown.
dan berikut ini adalah hasil yang akan ditampilkan dari survei yang telah kita buat dengan dua pertanyaan:
Tipe Input untuk Pertanyaan Survei
Berikut ini adalah contoh untuk pembuatan pertanyaan dengan tipe-tipe input yang sudah disediakan dari package shinySurveys:
Input Text
Tipe input text digunakan untuk pertanyaan dengan respon/jawaban berupa text. Sebagai contoh pada pertanyaan sebelumnya yakni “Siapakah nama Anda ?”. Untuk membuatnya kita hanya perlu mendifinisikan input_type = "text".
|
|
Input Numeric
Tipe input numeric digunakan untuk pertanyaan dengan respon/jawaban berupa angka. Sebagai contoh pada pertanyaan sebelumnya yakni “Berapakah usia Anda ?”. Untuk membuatnya kita hanya perlu mendifinisikan input_type = "numeric".
|
|
Input MC (Multiple Choices)
Tipe input mc digunakan untuk pertanyaan dengan respon/jawaban berupa pilihan ganda dengan tampilan output berupa radio button. Input ini cocok digunakan untuk pertanyaan pilihan ganda dengan opsi jawaban yang sedikit. Untuk membuatnya kita hanya perlu mendifinisikan input_type = "mc".
Berbeda dengan tipe input numeric dan text sebelumnya, untuk tipe input mc ini kita perlu membuat pertanyaan sebanyak opsi jawaban yang kita miliki dan di wrap dengan satu input id yang sama. Sebagai contoh disini kita akan mencoba membuat pertanyaan “Apakah jenis kelamin anda ?” yang memiliki dua opsi jawaban yakni Pria dan Wanita.
maka untuk membuat pertanyaan tersebut kita perlu menuliskan pertanyaan sebanyak opsi jawaban yang ada dengan dimasukkan kedalam sebuah list dengan input_id yang sama.
|
|
Input Select
Tipe input select digunakan untuk pertanyaan dengan respon/jawaban berupa pilihan ganda dengan tampilan output berupa dorpdown. Input ini cocok digunakan untuk pertanyaan pilihan ganda dengan opsi jawaban yang banyak. Untuk membuatnya kita hanya perlu mendifinisikan input_type = "select".
Untuk membuat pertanyaan dengan tipe input select dapat dilakukan dengan cara yang sama seperti type input mc. Sebagai contoh disini kita akan mencoba membuat pertanyaan “Di kota manakah anda tinggal saat ini ?” dengan opsi jawaban yakni DKI Jakarta, Bandung, Yogyakarta, Surabaya, Sukabumi, Denpasar, Malang & Semarang.
|
|
Input y/n
Tipe input y/n digunakan untuk pertanyaan dengan respon/jawaban berupa yes/no. Input ini hampir sama dengan tipe mc, dan untuk membuat pertanyaan tipe y/n dapat dilakukan dengan cara yang sama seperti type input mc. Sebagai contoh disini kita akan membuat pertanyaan “Apakah anda lajang ?” dengan dua opsi jawaban Ya & Tidak. Untuk membuatnya kita hanya perlu mendifinisikan input_type = "y/n".
|
|
Menggabungkan Beberapa Pertanyaan
Untuk menggabungkan beberapa pertanyaan yang kita buat terpisah agar menjadi sebuah form survei yang utuh, kita hanya perlu menambahkan fungsi rbind pada parameter df dari fungsi surveyOutput(). Sebagai contoh, disini kita akan coba gabungkan keseluruhuan tipe input yang sudah kita buat sebelumnya.
|
|
Disclaimer: Untuk code diatas merupakan sebuah code shinyapp sehingga harap dijalankan pada R.script tidak pada R.Markdown.
dan berikut ini adalah hasil form survei yang sudah kita buat
Conclusion
Dalam rangkaian pembahasan ini, kita telah melihat langkah-langkah sederhana untuk membuat survei menggunakan package shinysurveys dalam lingkungan R. Dari perancangan pertanyaan hingga integrasinya ke dalam aplikasi Shiny, panduan ini telah memberikan wawasan yang berguna tentang cara membuat survei yang efisien dan interaktif.
Namun, yang kami sajikan pada pembahasan kali ini baru sebagian kecil dari shinysurveys. Kami sangat mengundang Anda untuk menjelajahi lebih lanjut tentang shinysurveys dan eksplorasi berbagai fitur dan kemungkinan yang ditawarkannya. Semoga Anda dapat terus mengembangkan keahlian Anda. Terima kasih telah mengikuti panduan ini, dan selamat belajar lebih lanjut!
Referensi
Untuk mengeksplorasi lebih lanjut mengenai pembuatan survei dengan package shinysurveys, Anda bisa mengakses melalui link berikut berikut ini.
About Jonathan Trattner Github Shinysurveys CRAN shinysurveys package Easily Create and Deploy Surveys from R Shiny Surveys Example Custom input type Get Survey data flat illustration