knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

Dalam modul ini Anda akan diajak untuk mengenal hal-hal dasar mengenai bahasa pemrograman R untuk digunakan dalam aktivitas data sains.

R Markdown

Bagaimana jika ada satu format dokumen yang dapat menggabungkan antara narasi, kode pemrograman, dan keluaran dari kode tersebut dalam satu wadah sekaligus? R Markdown adalah jawabannya! Melalui dokumen R Markdown Anda dapat menuliskan kode analisis data, mengeksekusi kode tersebut, dan memberikan teks interpretasi untuk analisis data tersebut. Jika Anda pernah mendengar atau menggunakan Jupyter Notebook, maka R Markdown adalah ekuivalen untuk format dokumen tersebut. Informasi lebih lanjut mengenai R Markdown dapat dilihat pada pranala ini.

Di dokumen R Markdown Anda dapat melakukan pengaturan teks dengan menggunakan Markdown. Silakan klik menu "Help -- Markdown Quick Reference" untuk melihat sontekan cara pengaturan teks menggunakan Markdown langsung dari RStudio. Buatlah penomoran (numbering) dan pengaturan untuk teks di bawah ini:

  1. Kalimat ini dicetak tebal
  2. Kalimat ini dicetak miring
  3. Kalimat ini berisi tautan https://www.markdownguide.org/getting-started

Seperti disebutkan sebelumnya bahwa Anda juga dapat menuliskan kode pemrograman di dokumen R Markdown. Namun untuk membedakan antara teks biasa dengan kode pemrograman diperlukan suatu blok yang disebut dengan chunk (di Jupyter Notebook disebut sebagai cell). Suatu chunk ditandai dengan adanya tiga backticks "`" pada awal dan akhir baris kode pemrograman seperti contoh berikut:

Kalimat ini dicetak tebal Kalimat ini dicetak miring Kalimat ini berisi links

Selanjutnya untuk menegaskan bahasa pemrograman apa yang digunakan dan akan dieksekusidalam suatu chunk, Anda dapat menambahkan penanda "{bahasa_pemrograman}" tepat setelah penanda backticks di awal chunk. R Markdown mendukung dan dapat mengeksekusi beberapa jenis bahasa pemrograman selain R, misalnya Python, Julia, C, Fortran, SQL, dan Shell script. Dalam contoh berikut menunjukan penggunaan bahasa pemrograman R di dalam suatu chunk:

head(mtcars) # melihat 6 baris pertama dari data mtcars, mtcars adalah data bawaan yang tersedia di R
summary(mtcars) # melihat rigkasan statustik dari data data mtcars
filled.contour(volcano,
               color.palette = terrain.colors, 
               plot.title = title("Topografi Gunung Maunga Whau"), 
               key.title = title("Tinggi\n(meter)"))

Kombinasi "Ctrl + Alt + I" dapat Anda gunakan untuk membuah chunk dengan bahasa pemrograman R. Buatlah chunk baru berisi kode pemrograman R sebagai berikut!

filled.contour(volcano, color.palette = terrain.colors, plot.title = title("Topografi Gunung Maunga Whau"), key.title = title("Tinggi\n(meter)"))

Bagaimana cara menjalankan baris kode yang telah Anda tulis? Anda dapat melakukan evaluasi atau eksekusi baris kode yang terdapat di dalam chunk dengan cara menekan "Ctrl + Enter" atau "Ctrl + Shift + Enter". Dapatkan Anda menebak perbedaan antara dua kombinasi kibor tersebut?

R Markdown dapat disebut sebagai dokumen perantara untuk memproduksi dokumen final. Anda dapat dengan mudah memproduksi dokumen final dengan berbagai format dengan menggunakan R Markdown, misalnya dokumen teks biasa, salindia presentasi, laman web, dan bahkan aplikasi web interaktif. Beberapa ekstensi dokumen keluaran yang dapat dihasilkan diantaranya html, md, pdf, docx, odt, dan tex. Sebagai contoh pada modul-modul pelatihan ini kita akan memproduksi dokune final berupa "Github Flavoured Markdown" dengan ekstensi md.

Kemudian bagaimana cara mengatur dan memproduksi dokumen final tersebut? Caranya adalah dengan mengatur metadata pada dokumen R Markdown, khususnya pada baris output: ... (perhatikan kode pada baris-baris awal dokumen R Markdown ini!). Apabila Anda ingin menghasilkan dokumen final berupa docx, maka cukup ubah kode output: github_document menjadi output: word_document. Terakhir, Anda dapat memproduksi dokumen final dengan cara klik tombol "Knit" atau kombinasi "Ctrl + Shift + K". Dokumen final yang dihasilkan akan berisi teks narasi, kode pemrograman, dan keluaran dari kode pemrograman tersebut. Silakan coba setelah Anda mengisi dan menjawab seluruh pertanyaan dalam modul pertama ini.

Struktur data

Jalankanlah kode dalam chunk berikut:

"Halo, nama saya adalah vynska" # isi dengan nama Anda

Saat Anda menjalankan chunk di atas, R akan mengevaluasi dan melakukan eksekusi pada baris kode yang dituliskan. Dalam contoh di atas, keluaran dari eksekusi baris kode adalah kalimat "Halo, nama saya adalah (nama Anda)" yang tercetak di dokumen R Markdown atau konsol RStudio. Mengapa kalimat "# isi dengan nama Anda" tidak ikut tercetak?

Sekarang jalankanlah baris kode berikut:

123

Hasil eksekusi kode di atas pada dasarnya adalah obyek berupa vector. Vector merupakan struktur data paling mendasar di bahasa pemrograman R. Terdapat tiga properti utama dari suatu vector, yaitu: type, length, dan attribute. Pada contoh kode sederhana di atas, obyek yang dihasilkan memiliki type berupa "double", length bernilai satu, dan attribute bernilai "NULL".

Struktur obyek dalam bahasa pemrograman R dapat dikategorikan berdasarkan dimensi dan homogenitas dari elemennya. Obyek dengan satu dimensi dan elemen yang homogen disebut sebagai atomic vector, sedangkan apabila elemennya heterogen maka disebut dengan list. Cara untuk membuat atomic vector adalah dengan elemen lebih dari satu adalah dengan menggunakan fungsi c(), sedangkan untuk list dengan menggunakan fungsi list(). Perhatikan contoh berikut:

c(1, 2, 3, 4)
c("r", "academy", "telkom", "university")
list(15, "r", "TRUE", 24L)

Saat Anda mengeksekusi chunk di atas, keluaran dari kode yang Anda eksekusi hanya tercetak pada layar. Anda dapat "menyimpan" keluaran dari kode menjadi sebuah obyek R dengan menggunakan tanda <- dengan format "nama_obyek <- kode_yang_dieksekusi". Buatlah vector berupa huruf-huruf vokal dan simpanlah hasilnya dalam obyek R dengan nama huruf_vokal! Isilah "___" dengan jawaban yang sesuai!

huruf_vokal <- c("a", "i", "u", "e", "o") # objek data tersimpan dengan nama 'huruf_vokal', namun tidak tercetak pada layar
huruf_vokal # mencetak objek data dengan nama 'huruf_vokal' pada layar (Anda juga dapat menuliskannya sebagai "print(huruf_vokal)")

Properti type dari atomic vector dapat diketahui dengan menggunakan fungsi typeof(). Pada chunk berikut ditunjukan empat type atomic vector yang paling sering dijumpai:

typeof("Semangat belajar!")
typeof(77.6)
typeof(16L)
typeof(TRUE)

Dapatkah Anda mengetahui type dari huruf_vokal yang telah Anda buat diatas?

typeof(huruf_vokal)

Apa yang terjadi jika Anda obyek menggunakan fungsi c() namun setiap elemen dari obyek tersebut memiliki type yang berbeda? Dapatkah Anda memberikan penjelasan?

beragam <- c("Semangat belajar!", 77.6, 16L, TRUE)
beragam
typeof(beragam)

Struktur obyek dua dimensi merupakan yang paling banyak digunakan di R, yaitu matrix dan dataframe yang dapat dibuat dengan menggunakan fungsi matrix() dan data.frame(). Kedua data tersebut umumnya jarang dibuat secara langsung di R, notabene berasal dari berkas luar atau merupakan hasil dari penggunaan fungsi. Prinsipnya suatu dataframe merupakan gabungan dari beberapa data satu dimensi dengan jumlah yang sama, umumnya adalah atomic vectors. Menurut Anda, dapatkah suatu frame tersusun atas beberapa list dengan jumlah yang sama?

Operasi aritmatika

Anda dapat menggunakan simbol-simbol matematika pada umumnya untuk melakukan operasi matematika. Perhatikan contoh berikut:

5 + 6
580 - 13
75 * 65
983/56
54^3
27 %% 5
27 %/% 3

Sekarang cobalah lakukan operasi artimatika sama seperti pada chunk di atas untuk dua numeric vectors x dan y berikut. Apakah hasil yang Anda temukan? Apa yang terjadi jika length antar dua vector tersebut berbeda?

x <- c(34, 86, 98, 23, 66)
y <- c(5, 6, 2, 8, 4)
x + y
x - y
x * y
x / y
x^y
x %% y
x %/% y

Fungsi

Fungsi memiliki tugas utama untuk mengolah suatu input menjadi output. Anda dapat melihat dan membaca dokumentasi dari suatu fungsi dengan menjalankan ?nama_fungsi atau help(nama_fungsi). Di bawah ini merupakan beberapa fungsi dasar yang dapat Anda gunakan untuk mengolah obyek bernama iris sebagai input. Buatlah catatan singkat mengenai kegunaan dari setiap fungsi yang digunakan!

iris # mencetak data pada layar
?iris # dokumentasi dataset
dim(iris) # dimensi data iris
str(iris) # struktur data
colnames(iris) # nama kolom
head(iris) # melihat 6 baris pertama
head(iris, 10) # melihat n baris pertama (10)
tail(iris) # melihat 6 baris terakhir
tail(iris, 10) # melihat n baris terakhir (10)
summary(iris) # ___
iris[1, ] # ambil satu baris pertama dari semua kolom
iris[c(1, 6, 12),] # ambil baris 1,6,2 dari semua kolom
iris[ ,2] # satu kolom kedua dari semua baris, format vector
iris[ ,2, drop = FALSE] # satu kolom kedua dari semua baris, format
iris[2,2] # ___
iris$Sepal.Length # ___
class(iris$Species) # ___
length(iris$Petal.Width) # m___
levels(iris$Species) # ___
length(levels(iris$Species)) # ___
unique(iris$Species) # ___
length(unique(iris$Species)) # ___
mean(iris$Sepal.Length) # ___
sd(iris$Sepal.Length) # ___
median(iris$Sepal.Width) # ___
sum(iris$Petal.Length) # ___
plot(iris) # ___
cor(iris[, -5]) # ___
write.csv(iris, file = "iris.csv", row.names = FALSE) # ___

Dari catatan ringkas mengenai fungsi-fungsi di atas, dapatkah Anda menebak mana fungsi yang berjenis 'changing the environment' dan mana yang berjenis 'calculating value'?

Paket

Meskipun R telah memiliki banyak fungsi bawaan dan sangat bermanfaat, tidak jarang Anda memerlukan fungsionalitas lain yang tidak tersedia di R. Di bahasa pemrograman R terdapat sistem ekstensi yang disebut sebagai paket. Anda dapat melakukan banyak hal dan berbagai tujuan dengan cara memasang paket yang sesuai. Terdapat berbagai sumber repositori tempat paket-paket tersebut tersimpan secara daring, diantaranya adalah CRAN (Comprehensive R Archive Network), GitHub, dan Bioconductor.

Anda dapat memasang paket yang berasal dari CRAN dengan menggunakan fungsi install.packages("nama_paket"). Pada RStudio Anda juga dapat melakukan hal tersebut melalui menu "Tools-Install Packages". Sekarang cobalah pasang paket "tidyverse", "tidymodels", dan "tidytext"! (Catatan: jika Anda menuliskan fungsi untuk memasang paket di dalam chunk R Markdown maka jangan lupa tambahkan argumen eval = FALSE di awal chunk)

install.packages("tidyverse")
install.packages("tidymodels")
install.packages("tidytext")

Sedangkan untuk paket yang berasal dari GitHub dan Bioconductor dapat dipasang menggunakan fungsi remotes::install_github("user/repo") serta remotes::install_bioc("repo"). (Catatan: Anda harus memasang paket remotes terlebih dahulu)

Selamat Anda telah menyelesaikan modul 1! Silakan jalankan "Ctrl + Shift + K" atau klik tombol "Knit" untuk membuat dokumen final.



vynspermadi/tidyds documentation built on Nov. 5, 2019, 12:06 p.m.