Dasar R

Oleh: Fida Fariha A

Install Aplikasi

Sebelum memulai praktik menggunakan R, pastikan bahwa aplikasi R telah terinstall di perangkat. Langkah install aplikasi sebagai berikut:

R for Windows 10/11

R for Macos 12+

Tampilan Awal Aplikasi

.
.

Untuk menampilkan halaman kerja, bisa klik kotak 2 lapis di pojok kanan atas, yang berbentuk seperti berikut:

.
.

sehingga tampilan akan menjadi seperti gambar di bawah ini:

.
.
  • Kotak merah pada gambar merupakan tempat untuk menuliskan syntax/script sebelum program dijalankan. Untuk menjalankan program, bisa dilakukan dengan cara blok script yang ingin dijalankan lalu klik ctrl + enter atau klik tools Run dibagian atas sebelah kanan kotak merah.

  • Kotak hitam merupakan console/konsol R. Pada konsol tersebut, script bisa dituliskan dan akan langsung keluar sebuah output/hasil dengan cara klik enter. Script yang ditulis di dalam konsol R, tidak dapat diubah jika telah klik enter. Konsol R diawali tanda >, yang menunjukkan bahwa R siap menerima perintah baru, jika yang muncul tanda +, artinya perintah yang dimasukkan tidak lengkap.

  • Kotak biru merupakan tempat untuk melihat data apasaja yang tersimpan dalam script yang telah dibuat.

  • Kotak hijau merupakan tempat untuk melihat plot/grafik yang kita buat, tempat untuk melakukan penginstalan atau pengecekan paket yang dimiliki, serta bantuan.

Catatan: R tidak akan menjalankan perintah untuk teks yang ditulis setelah tanda #. Tanda ini biasanya berguna untuk memberikan komentar atau catatan.

Untuk membuat file baru, bisa klik logo kertas putih dengan tanda tambah berwarna hijau yang berada di pojok kiri atas, lalu pilih R Script, R Markdown, atau sebagainya (sesuaikan dengan kebutuhan). Tampilan seperti gambar berikut:

. Perbedaan tampilan R Script dan R Markdown bisa dilihat pada gambar berikut:

  • R Script .

  • R Markdown . Lembar kerja dengan R Script dapat dijalankan baris perbaris atau dengan cara blok script yang ingin dijalankan, sedangkan R Markdown, memiliki fitur chunk yang dapat menjalankan script secara langsung dalam chunk yang sama. Output R Script akan muncul di kotak console (kotak yang berada dibawah script), sedangkan output R Markdown akan muncul di bawah chunk. Perbedaan lokasi output antara R Script dan R Markdown dapat dilihat pada gambar berikut: .

Aturan Pemberian Nama

R akan memandang segala hal sebagai objek yang dapat “diberi nama” apapun sesuai yang kita mau, pastinya nama tersebut mudah diingat dan dipahami. Meskipun demikian, terdapat beberapa aturan penamaan objek dalam R yang harus dipenuhi, yaitu:

  • Menggunakan kombinasi alfabet (a-z, A-Z), angka (0-9), titik (.) atau underscore (_),
  • Hanya dapat diawali oleh alfabet, titik atau underscore dan tidak boleh diawali dengan angka,
  • Tidak mengandung spasi, tab atau karakter khusus seperti !, @, #,
  • Sebaiknya tidak menggunakan penamaan atau nilai yang sudah digunakan oleh R, seperti c, df, rnorm dan lainnya.

R memiliki sifat yang sensitif, sehingga dalam penamaan objek perlu diperhatikan huruf kapitalnya. karena nilai A akan berbeda dengan nilai a begitupun dengan aB akan berbeda dengan Ab. Dalam kasus ini, disarankan untuk menggunakan penamaan yang lazim dan konsisten ketika membuat sebuah program dalam R (atau bahasa pemrograman apapun) seperti:

  • alllowercase: misal data
  • period.separated: misal data.panen
  • underscore_separated: misal data_produksi
  • lowerCamelCase: misal dataPanensawit
  • UpperCamelCase: misal DataHasilPanen

Note: meskipun diizinkan, penggunaan underscore sebaiknya dihindari karena sedikit sekali yang menerapkannya pada R.

Data

Sebelum melakukan proses input data, perlu dipahami beberapa hal penting seperti tipe data dan struktur data.

Tipe Data

R mempunyai beberapa jenis mode objek dasar, atau disebut sebagai “atomic” class dari objek, yaitu:

  • character, misalnya "halo", "mahasiswa", "ipb"
  • numeric, misalnya 10, 1.1, 1.5e-2
  • complex, misalnya 1.2e6+2i
  • logical, misalnya T, F, TRUE, FALSE

Objek Angka: Angka dalam R umumnya diperlakukan sebagai objek numerik (atau angka riil). Artinya, jika data tersebut merupakan data kategori yang diberi tanda dengan “angka” seperti jenis kelamin 1: Laki-laki dan 2:Perempuan, maka R akan menangkap pengkodean tersebut sebagai data numerik, bukan kategorik. Dalam kasus ini diperlukan sebuah treat untuk merubah data numerik menjadi data faktor atau dapat dilakukan dengan menambahkan akhiran L. Misal untuk mendapatkan integer 1 harus ditulis 1L.

Struktur Data

Terdapat beberapa tipe objek data standar dalam R, yaitu:

  • Vector: tipe sederhana dari objek data dalam R di mana setiap elemennya mempunyai mode yang sama
  • Factor: vektor dengan anggota/elemennya berupa kategori
  • Matrix: vektor yang berdimensi dua yaitu baris dan kolom
  • Array: tipe objek yang dapat menyimpan data lebih dari dua dimensi
  • Data frame: objek yang menyimpan data dalam bentuk tabular (baris dan kolom)
  • List: vektor dengan anggota/elemennya berupa objek. Mode dari elemen list boleh berbeda-beda

Input Data Manual Sesuai Struktur Data

Data dapat di input langsung dalam R tanpa mengambil dari penyimpanan komputer. Proses input data dapat disesuaikan dengan struktur data.

Data Vektor

Banyak cara membuat vector. Beberapa di antaranya adalah menggunakan perintah c(), seq() dan rep().

  • Fungsi c() Sebuah vektor dapat dibuat dengan fungsi c() di mana setiap elemen dipisahkan oleh tanda koma.
panen <- c(100, 120, 110, 105, 135, 125, 130, 115, 140, 145)
c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J") -> kebun
divisi = c("div 1", "div 1", "div 1", "div 2", "div 2", "div 2", "div 3", "div 3", "div 3", "div 3")
panen
##  [1] 100 120 110 105 135 125 130 115 140 145
kebun
##  [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"
divisi
##  [1] "div 1" "div 1" "div 1" "div 2" "div 2" "div 2" "div 3" "div 3" "div 3"
## [10] "div 3"

Pada contoh tersebut, panen dan kebun merupakan nama objek, sehingga jika program di jalankan, objek “panen” dan “kebun” akan tersimpan dalam Environment. Tanda <- merupakan operator assigment, obj <- expr berarti masukkan nilai hasil dari operasi di sisi kanan (expr) ke dalam objek di sisi kiri (obj). Selain dengan operator <-, kita juga dapat menggunakan operator = atau ->. Data numerik dapat langsung dimasukkan dengan tanda , sebagai pemisah dan . sebagai koma jika dalam pecahan desimal, sedangkan data kategorik penginputan data harus disertai dengan tanda kutip dua seperti "data".

  • Fungsi seq() Fungsi seq() digunakan untuk membuat vector yang berisi angka berurutan.
urut <- seq(from = 1, to = 10)
urut1 <- seq(1:10)
langkah <- seq(from = 1, to = 10, by = 2)
urut
##  [1]  1  2  3  4  5  6  7  8  9 10
urut1
##  [1]  1  2  3  4  5  6  7  8  9 10
langkah
## [1] 1 3 5 7 9

Pada contoh di atas, objek urut dan urut1 memiliki data yang sama, hal ini menunjukkan bahwa proses penginputan data urut menggunakan fungsi seq dapat dilakukan dengan menuliskan seq(from = 1, to = 10) atau seq(1:10), sedangkan objek langkah, terdapat tambahan fungsi by, ini menunjukkan bahwa data yang dimasukkan secara urut akan melangkahi 2 nomor, seperti hasil yang di peroleh yaitu 1, 3, 5, 7, 9.

  • Fungsi rep() Fungsi rep() digunakan untuk membuat vector dengan mengulang nilai yang diinginkan.
ulang <- rep(1, 10)
ulang
##  [1] 1 1 1 1 1 1 1 1 1 1
  • Mengakses Elemen Vektor Elemen pada vector dapat diakses melalui indeksnya dengan menggunakan operator [ ].
panen[1]
## [1] 100
panen[c(1,2)]
## [1] 100 120

Pada contoh di atas, kita mengakses elemen pertama dan elemen kedua dari objek “panen”. Jika ingin mengakses lebih dari 1, dapat digunakan fungsi [c()].

Fungsi untuk membuat data vector, yaitu length() dan class(). Fungsi length() berguna untuk mengetahui pajang atau banyaknya elemen dari suatu vector sedangkan class() untuk mengetahuai class atau mode dari suatu vector.

Data Factor

Faktor digunakan untuk merepresentasikan data kategorik, baik terurut/ordered maupun tidak terurut/unordered. Faktor dapat dianggap sebagai vektor di mana setiap elemennya memiliki label. Objek faktor dapat dibuat dengan fungsi factor().

dosis <- c("50gr", "75gr", "100gr", "50gr", "75gr", "100gr", "50gr", "75gr", "100gr", "50gr")

Untuk mengurutkan sebuah faktor, dapat dilakukan dengan menggunakan fungsi levels

factor(dosis, levels = c("100gr", "50gr", "75gr"))
##  [1] 50gr  75gr  100gr 50gr  75gr  100gr 50gr  75gr  100gr 50gr 
## Levels: 100gr 50gr 75gr
factor(dosis, levels = c("50gr", "75gr", "100gr"), ordered = T)
##  [1] 50gr  75gr  100gr 50gr  75gr  100gr 50gr  75gr  100gr 50gr 
## Levels: 50gr < 75gr < 100gr

Pada contoh di atas, dapat dilihat bahwa terdapat 3 jenis dosis yang digunakan, dengan fungsi factor dimasukkan faktor dosis ke dalam levels, bisa dilakukan secara berurutan atau acak, dapat disesuaikan dengan banyaknya faktor yang dimiliki. fungsi ordered berguna untuk mengurutkan dari nilai terkecil hingga terbesar.

Data Matrix

Matriks merupakan vector yang berdimensi dua yaitu baris dan kolom. Matriks dapat dibuat dengan mengubah dimensi dari suatu vector.

Matriks dapat dibentuk dengan perintah matrix(). Secara default, matriks dibentuk dengan cara column-wise (byrow = FALSE), yaitu dengan mengisi kolom pertama terlebih dahulu, dari atas ke bawah, dilanjutkan kolom berikutnya.

Sebagai contoh, akan dibuat matrix berukuran 3x3 :

cobamatrix <- matrix(1:9, nrow = 3, ncol = 3) 
cobamatrix
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

Pada contoh di atas, fungsi 1:9 untuk mengisi data matrix secara urut dari angka 1 - 9, karena jumlah data untuk matrix berukuran 3x3 yaitu 9. Jika ingin membuat matrix berukuran 4x3 maka jumlah data yang dibutuhkan yaitu 12, sehingga 1:9 bisa diubah menjadi 1:12 dan seterusnya. Selain itu, bisa menambahkan argumen byrow = TRUE sehingga akan mengisi baris pertama terlebih dahulu, mulai dari kiri ke kanan, dilanjutknya ke baris berikutnya.

cobamatrix <- matrix(1:9, nrow = 3, ncol = 3, byrow = TRUE) 
cobamatrix
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9

Matriks dapat dibentuk secara langsung dari vector dengan cara menambahkan atribut dimensi, yaitu dim(). Cara lain membentuk matriks adalah dengan penggabungan kolom dengan fungsi cbind() dan penggabungan baris dengan fungsi rbind().

  • Fungsi dim()
x <- 1:4
y <- 10:13
m <- 1:10
dim(m) <- c(2, 5)
m
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    3    5    7    9
## [2,]    2    4    6    8   10
  • Fungsi cbind()
cobamatrix <- cbind(x, y)
cobamatrix
##      x  y
## [1,] 1 10
## [2,] 2 11
## [3,] 3 12
## [4,] 4 13
  • Fungsi rbind()
cobamatrix <- rbind(x, y)
cobamatrix
##   [,1] [,2] [,3] [,4]
## x    1    2    3    4
## y   10   11   12   13

Data Array

Array adalah struktur data yang dapat menampung data multidimensi. Dalam R, jika matriks hanya mempunyai dua dimensi, maka array dapat memiliki lebih dari 2 dimensi.

v1 <-  c(5, 10, 15, 20)
v2 <-  c(25, 30, 35, 40, 45, 50, 55, 60)

arr <- array(c(v1, v2), dim =c(4,4,3))
arr
## , , 1
## 
##      [,1] [,2] [,3] [,4]
## [1,]    5   25   45    5
## [2,]   10   30   50   10
## [3,]   15   35   55   15
## [4,]   20   40   60   20
## 
## , , 2
## 
##      [,1] [,2] [,3] [,4]
## [1,]   25   45    5   25
## [2,]   30   50   10   30
## [3,]   35   55   15   35
## [4,]   40   60   20   40
## 
## , , 3
## 
##      [,1] [,2] [,3] [,4]
## [1,]   45    5   25   45
## [2,]   50   10   30   50
## [3,]   55   15   35   55
## [4,]   60   20   40   60

Untuk mengetahui dimensi dari suatu array, dapat menggunakan fungsi dim()

dim(arr)
## [1] 4 4 3

Dataframe

Baris dalam data frame merepresentasikan pengamatan/observasi, sedangkan kolom mereprentasikan peubah/variabel. Setiap elemen dalam kolom yang sama mempunyai mode yang sama, namun antar kolom bisa mempunyai mode yang berbeda.

Data frame dapat dibuat menggunakan fungsi data.frame():

datapanen <- data.frame(kebun, divisi, panen)
datapanen
##    kebun divisi panen
## 1      A  div 1   100
## 2      B  div 1   120
## 3      C  div 1   110
## 4      D  div 2   105
## 5      E  div 2   135
## 6      F  div 2   125
## 7      G  div 3   130
## 8      H  div 3   115
## 9      I  div 3   140
## 10     J  div 3   145
datapanen <- data.frame(kebun = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J"),
                        divisi = c("div 1", "div 1", "div 1", "div 2", "div 2", "div 2", "div 3", "div 3", "div 3", "div 3"),
                        panen = c(100, 120, 110, 105, 135, 125, 130, 115, 140, 145))
datapanen
##    kebun divisi panen
## 1      A  div 1   100
## 2      B  div 1   120
## 3      C  div 1   110
## 4      D  div 2   105
## 5      E  div 2   135
## 6      F  div 2   125
## 7      G  div 3   130
## 8      H  div 3   115
## 9      I  div 3   140
## 10     J  div 3   145

Data List

List merupakan bentuk khusus dari vector yang memungkinkan elemennya bisa berupa objek dengan mode yang berbeda-beda. Elemen-elemen dari list dapat berupa vector, matriks, array, list atau gabungan beberapa struktur data.

List dapat dibuat dengan menggunakan fungsi list()

s <- "A" 
v <- c(1:20)
m <- matrix(1:6, nrow = 2, ncol = 3, byrow = TRUE) 
df <- data.frame(numbers = c(10, 20, 30, 40),
                  text = c("a", "b", "c", "a"))

l <- list(s, v, m, df)
l
## [[1]]
## [1] "A"
## 
## [[2]]
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
## 
## [[3]]
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## 
## [[4]]
##   numbers text
## 1      10    a
## 2      20    b
## 3      30    c
## 4      40    a

Input Data dari Penyimpanan

R dapat mengambil file yang sudah tersimpan dengan format csv, xlsx, txt, shp, atau sebagainya sesuai kebutuhan.

Data dengan Format xls atau xlsx

Untuk format ini, dibutuhkan package tambahan yaitu readxl, silahkan install package terlebih dahulu, lalu jalankan.

#install.packages("readxl")
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.3

Setelah berhasil melakukan install package dan memanggil package, maka dapat langsung mengambil file yang disimpan dengan fungsi readxl(). Fungsi yang digunakan, yaitu readxl::read_xlsx(“Path/NamaFile.xlsx”). Perlu diperhatikan untuk path merupakan lokasi file tersimpan, pastikan lokasi penyimpanan benar dan simbol pemisah yang digunakan adalah / bukan \. Data yang digunakan pada contoh dapat diunduh di sini

phone <- readxl::read_xlsx("D:/IPB/STA1512/STA1512/Prak. By Fida/Data Pertemuan 3.xlsx")
head(phone)
## # A tibble: 6 × 2
##   Phone                   SAR
##   <chr>                 <dbl>
## 1 Apple iPhone 4S       1.11 
## 2 BlackBerry Pearl 8120 1.48 
## 3 BlackBerry Tour 9630  1.43 
## 4 Cricket TXTM8         1.3  
## 5 HP/Palm Centro        1.09 
## 6 HTC One V             0.455

Data dengan Format csv

Data dengan format csv dapat dipanggil dengan fungsi read.csv("Path/NamaFile.csv") tanpa menggunakan package. Pada fungsi read.csv(), dapat ditambahkan fungsi sep = "" untuk menjelaskan tanda pisah yang terdapat pada file csv yang dimiliki. Jika tanda pisah menggunakan tanda , maka dapt ditulis dengan sep = "," dan seterusnya. Data yang digunakan pada contoh dapat diunduh di sini

phone <- read.csv("D:/IPB/STA1512/STA1512/Prak. By Fida/Data Pertemuan 3.csv", sep = ",")
head(phone)
##                   Phone   SAR
## 1       Apple iPhone 4S 1.110
## 2 BlackBerry Pearl 8120 1.480
## 3  BlackBerry Tour 9630 1.430
## 4         Cricket TXTM8 1.300
## 5        HP/Palm Centro 1.090
## 6             HTC One V 0.455

Data dengan Format txt

Data dengan format txt dapat dipanggil dengan fungsi read.delim("Path/NamaFile.csv") tanpa menggunakan package. Sama halnya dengan fungsi read.csv(), fungsi read.delim dapat ditambahkan fungsi sep = "" untuk menjelaskan tanda pisah yang terdapat pada file txt yang dimiliki. Data yang digunakan pada contoh dapat diunduh di sini

phone <- read.delim("D:/IPB/STA1512/STA1512/Prak. By Fida/Data Pertemuan 3.txt", sep = ",")
head(phone)
##                   Phone   SAR
## 1       Apple iPhone 4S 1.110
## 2 BlackBerry Pearl 8120 1.480
## 3  BlackBerry Tour 9630 1.430
## 4         Cricket TXTM8 1.300
## 5        HP/Palm Centro 1.090
## 6             HTC One V 0.455

Operator Operasi Pada R

Terdapat sejumlah operator operasi yang penting untuk pembaca ketahui, antara lain:

  • Operator aritmatika,
  • Operator perbandingan, dan
  • Operator logika.

Operator aritmatika

Dalam operator aritmatika, ketika tidak ditapkan urutan perhitungan menggunakan tanda kurung, maka R akan secara otomatis akan menghitung terlebih dahulu perkalian atau pembangian.

Simbol Keterangan
+ Addition, untuk operasi penjumlahan
- Substraction, untuk operasi pengurangan
* Multiplication, untuk operasi pembagian
/ Division, untuk operasi pembagian
^ Eksponentiation, untuk operasi pemangkatan
%% Modulus, Untuk mencari sisa pembagian
%/% Integer, Untuk mencari bilangan bulat hasil pembagian saja dan tanpa sisa pembagian
6+4
## [1] 10
6-4
## [1] 2
6*4
## [1] 24
6/4
## [1] 1.5
6^4
## [1] 1296
6%%4
## [1] 2
6%/%4
## [1] 1

Operator perbandingan

Operator relasi digunakan untuk membandingkan satu objek dengan objek lainnya.

Simbol Keterangan Deskripsi
== Sama Dengan Bernilai TRUE jika kedua objek bernilai sama
!= Tidak Sama Dengan Bernilai TRUE jika kedua objek tidak bernilai sama
> Lebih Besar Dari Bernilai TRUE jika nilai objek kanan lebih besar dari nilai objek kiri
< Lebih Kecil Dari Bernilai TRUE jika nilai objek kanan lebih kecil dari nilai objek kiri
>= Lebih Besar Sama Dengan Bernilai TRUE jika nilai objek kanan lebih besar atau sama dengan dari nilai objek kiri
<= Lebih Kecil Sama Dengan Bernilai TRUE jika nilai objek kanan lebih kecil atau sama dengan dari nilai objek kiri
a <- 25
b <- 27
a==b
## [1] FALSE
a!=b
## [1] TRUE
a>b
## [1] FALSE
a<b
## [1] TRUE
a>=b
## [1] FALSE
a<=b
## [1] TRUE

Operator logika

Operator logika hanya berlaku pada vektor dengan tipe logical, numeric, atau complex. Semua angka bernilai 1 akan dianggap bernilai logika TRUE.

Simbol Keterangan
&& Operator logika AND
|| Operator logika OR
! Opeartor logika NOT
& Operator logika AND element wise
| Operator logika OR element wise
v <- c(TRUE,TRUE,FALSE)
t <- c(FALSE,FALSE,FALSE)
print(v[1] && t[1])
## [1] FALSE
print(v[1] || t[1])
## [1] TRUE
print(!v)
## [1] FALSE FALSE  TRUE
print(v&t)
## [1] FALSE FALSE FALSE
print(v|t)
## [1]  TRUE  TRUE FALSE
  • Operator && Operator && adalah Logical AND dan hanya memeriksa elemen pertama dari masing-masing vektor. Karena elemen pertama dari v adalah TRUE dan elemen pertama dari t adalah FALSE, maka hasilnya adalah FALSE.

  • Operator || Operator || adalah Logical OR dan hanya memeriksa elemen pertama dari masing-masing vektor. Karena elemen pertama dari v adalah TRUE, maka hasilnya adalah TRUE.

  • Operator ! Operator ! adalah Logical NOT yang membalik nilai logika setiap elemen dalam vektor v. Maka hasilnya akan menjadi kebalikan dari setiap elemen di v.

  • Operator & Operator & adalah Element-wise Logical AND yang memeriksa setiap elemen dari vektor v dan t satu per satu secara berpasangan (sesuai urutan dari kiri ke kanan).

  • Operator | Operator | adalah Element-wise Logical OR yang memeriksa setiap elemen dari vektor v dan t satu per satu secara berpasangan (sesuai urutan dari kiri ke kanan).