Project R

  • Versi R tersedia untuk Windows, MacOS, Linux
  • R diciptakan oleh Ross Ihaka dan Robert Gentleman (Universitas Auckland) pada tahun 1995
  • R merupakan implementasi dari bahasa S yang dikenalkan oleh John Chambers

Fitur Dasar R

R dapat digunakan sebagai kalkulator, operator dasar perhitungan meliputi +,-,*,/,^

10+3
## [1] 13
10-3
## [1] 7
10*3
## [1] 30
10^3
## [1] 1000

10/3
## [1] 3.333333
10 %% 3 # operator modulus
## [1] 1
10 %/% 3 # hasil pembagian (integer/angka bulat)
## [1] 3

R Console

Interaksi dasar dengan R dilakukan dengan menuliskan perintah pada bagian console atau disebut juga terminal atau command-line

Perintah dituliskan pada bagian console dan R akan memberikan output (atau error)

Objek

  • Semua informasi di R umumnya disimpan dalam bentuk objek dengan menggunakan tanda <-
  • R merupakan program yang case-senitive, X dan x adalah dua objek yang berbeda
x <- 1
X <- 3
a <- -10

Untuk menampilkan isi yang tersimpan di dalam objek, cukup menuliskan saja nama objeknya dan kemudian dijalankan

x
## [1] 1
X
## [1] 3
a
## [1] -10

Beberapa nama sudah merupakan built-in

pi
## [1] 3.141593
10*pi
## [1] 31.41593
cos(pi)
## [1] -1

Tipe data dalam R

Secara umum ada 4 tipe data dalam R

  • numeric: tipe data berupa angka
  • character: tipe data berupa huruf/angka
  • logical: tipe data berupa TRUE/FALSE
  • date: tipe data tanggal

Untuk mengetahui tipe data dalam R dapat digunakan fungsi class()

a <- 2
class(a)
## [1] "numeric"
b <- "statistika"
class(b)
## [1] "character"

Tipe data dalam R

c <- 5 > 2
class(c)
## [1] "logical"
d <- as.Date("2020-01-09")
class(d)
## [1] "Date"

Objek Data Standar

R memiliki 6 cara untuk menyimpan data dalam bentuk objek, yaitu

  • vector
  • factor
  • matrix
  • data.frame
  • list
  • array

Vektor

  • Vektor di R berisi elemen-elemenyang memiliki tipe data sama
  • Fungsi c()digunakan untuk membuat vektor
x <- c(7, 8, 10, 45)
x
## [1]  7  8 10 45

Vektor

Mengakses elemen di dalam vektor bisa menggunakan operator [] setelah nama objek

x[2] # elemen kedua dari vektor
## [1] 8
x[2:4] # elemen kedua s/d keempat
## [1]  8 10 45
x[-2] # semua elemen vektor kecuali elemen kedua
## [1]  7 10 45

Vektor

Vektor di matematika memiliki dimensi n x 1 atau 1 x n, sedangkan vektor di R tidak memliki dimensi

dim(x)
## NULL

Vector di R hanya merupakan kumpulan dari beberapa objek yang bertipe data sama, sehingga kita bisa melihat banyaknya objek-objek atau elemen-elemen yang ada di R dengan menggunakan fungsi length().

length(x)
## [1] 4

Vektor

Cara lain membuat vektor di R bisa menggunakan fungsi: - rep() memberikan vektor dengan elemen yang diulang atau mengikuti pola tertentu - seq() atau m:n membangkitkan barisan

rep(1,10) # mengulang bilangan 1 sebanyak 10x
##  [1] 1 1 1 1 1 1 1 1 1 1
rep(1:3,3) # mengulang deret 1,2,3 sebanyak 3 kali
## [1] 1 2 3 1 2 3 1 2 3
rep(1:3, each = 3) # mengulang masing-masing elemen 1,2,3 sebanyak 3 kali
## [1] 1 1 1 2 2 2 3 3 3

Vektor

seq(2,6) # deret bilangan integer dari 2 s/d 6
## [1] 2 3 4 5 6
seq(4,20,by=4) #deret kelipatan 4 diantara 4 dan 20
## [1]  4  8 12 16 20
seq(4,20,length.out=10) #deret diantara 4 dan 20 sebanyak 10
##  [1]  4.000000  5.777778  7.555556  9.333333 11.111111 12.888889 14.666667
##  [8] 16.444444 18.222222 20.000000

Aritmatika vektor

Operasi matematika dasar seperti +,-,/,* dapat dilakukan pada vektor dengan operasi perhitungan dilakukan pada posisi elemen yang bersesuaian

y <- c(-7, -8, -10, -45)
x+y
## [1] 0 0 0 0
x*y
## [1]   -49   -64  -100 -2025

Fungsi pada vektor

Tersedia berbagai macam fungsi pada vektor dengan perintah:

  • mean(), median(), sd(), var(), max(), min(), length(), sum(): memberikan satu nilai
  • sort() memberikan vektor baru yang sudah diurut
  • hist() membuat histogram
  • ecdf() memberikan objek fungsi peluang kumulatif
  • summary() memberikan 5 ringkasan nilai statistik dalam bentuk vektor

Factor

  • Factor merupakan vektor yang dikhususkan untuk menangani data kategorik
  • Dengan menggunakan factor, kita bisa tahu kategori apa saja yang berada dalam data tersebut dengan mengabaikan pengulanganya.
jenisKelamin <- c("pria","wanita","pria","wanita","wanita")
jenisKelamin
## [1] "pria"   "wanita" "pria"   "wanita" "wanita"
jenisKelaminFactor <- factor(jenisKelamin,levels = c("pria","wanita"))
jenisKelaminFactor
## [1] pria   wanita pria   wanita wanita
## Levels: pria wanita
levels(jenisKelaminFactor)
## [1] "pria"   "wanita"

Matriks

  • Matriks di R memiliki dimensi baris dan kolom. Matriks dapat dikatakan sebagai gabungan beberapa vektor dengan jenis data yang sama dan panjang yang sama
  • Membuat matriks di R bisa menggunakan fungsi matrix()
mat1 <- matrix(x, nrow = 2, ncol = 2, byrow = FALSE)
mat1
##      [,1] [,2]
## [1,]    7   10
## [2,]    8   45
mat2 <- matrix(c(x,y), nrow = 2, ncol = 4, byrow = TRUE) # mengisi matriks dalam urutan baris
mat2
##      [,1] [,2] [,3] [,4]
## [1,]    7    8   10   45
## [2,]   -7   -8  -10  -45

Matriks

Dimensi matriks bisa diakses dengan menggunakan perintah dim(), nrow(), dan ncol()

dim(mat2) # dimensi baris x kolom
## [1] 2 4
nrow(mat2) # banyaknya baris
## [1] 2
ncol(mat2) # banyaknya kolom
## [1] 4

Matriks

Mengakses elemen-elemen matriksdi R dapat dilakukan dengan menggunakan operator [] setelah nama objek matriks

mat2[1,] #baris pertama matriks
## [1]  7  8 10 45
mat2[,4] #kolom keempat matriks
## [1]  45 -45
mat2[1,4] #elemen pada baris ke-1 dan kolom ke-4 
## [1] 45

Aritmatika matriks

t(mat2) #transpose matriks
##      [,1] [,2]
## [1,]    7   -7
## [2,]    8   -8
## [3,]   10  -10
## [4,]   45  -45
mat1%*%mat2 # perkalian matriks
##      [,1] [,2] [,3]  [,4]
## [1,]  -21  -24  -30  -135
## [2,] -259 -296 -370 -1665
solve(mat1) # invers matriks
##             [,1]        [,2]
## [1,]  0.19148936 -0.04255319
## [2,] -0.03404255  0.02978723
df
## function (x, df1, df2, ncp, log = FALSE) 
## {
##     if (missing(ncp)) 
##         .Call(C_df, x, df1, df2, log)
##     else .Call(C_dnf, x, df1, df2, ncp, log)
## }
## <bytecode: 0x000000001522eeb8>
## <environment: namespace:stats>

Data Frame

Bentuk data frame lebih umum daripada matriks dimana setiap kolom bisa memiliki jenis data yang berbeda

d <- c(5,-10,7,-2)
e <- c("A","B","C","D")
f <- c(TRUE,TRUE,FALSE,TRUE)
df <- data.frame(d,e,f)
df
##     d e     f
## 1   5 A  TRUE
## 2 -10 B  TRUE
## 3   7 C FALSE
## 4  -2 D  TRUE

Import data

Data frame dapat juga dipanggil melalui data eksternal (import data):

  • read.table() memuat data dalam bentuk txt
  • read.csv() dipakai untuk memuat data dalam bentuk csv

contoh: read.csv("nama_file.csv")

Identifikasi baris, kolom, dan elemen pada data frame mirip dengan identifikasi pada matriks.

Ada tambahan beberapa perintah yang sama untuk identifikasi kolom pada dataframe

df$e
## [1] "A" "B" "C" "D"
df[,2]
## [1] "A" "B" "C" "D"
df['e']
##   e
## 1 A
## 2 B
## 3 C
## 4 D

Menambah kolom dan baris pada data frame

Data frame yang sudah ada bisa ditambahkan kolom baru dengan perintah cbind() atau baris baru dengan perintah rbind().

cbind(df, g = c(1,0,0,1))
##     d e     f g
## 1   5 A  TRUE 1
## 2 -10 B  TRUE 0
## 3   7 C FALSE 0
## 4  -2 D  TRUE 1
rbind(df, list=c(d=2,e="A",f=TRUE))
##     d e     f
## 1   5 A  TRUE
## 2 -10 B  TRUE
## 3   7 C FALSE
## 4  -2 D  TRUE
## 5   2 A  TRUE

R Workspace

  • R merujuk pada suatu working directory. Untuk mengetahui working directory yang sedang digunakan bisa menggunakan perintah getwd()
  • setwd() digunakan untuk mengganti working directory.
getwd()
## [1] "E:/dna/UIN/Courses/Komputasi Statistik/2020/markdown"
setwd("E:/dna/UIN/Courses/Komputasi Statistik/")

Programming di R

  • Looping
  • Function
  • If statement (tidak dibahas dalam materi ini)

Looping

Looping adalah cara untuk mengulang suatu perintah dengan kondisi yang ditentukan. Dengan looping, kita dapat mengotomatiskan suatu kode yang butuh diulang dalam suatu fungsi dengan script yang lebih singkat. Looping yang digunakan dalam R yaitu:

  • for

  • while

  • repeat

Materi kali ini hanya membahas looping dengan perintah for

Kontrol Loop for

Menuliskan for dalam R dengan sintak dasar berikut:

for (nilai dalam vektor){
kode perintah/pernyataan
}

Kontrol Loop for

Script tanpa loop:

print(paste("The year is", 2015))
## [1] "The year is 2015"
print(paste("The year is", 2016))
## [1] "The year is 2016"
print(paste("The year is", 2017))
## [1] "The year is 2017"
print(paste("The year is", 2018))
## [1] "The year is 2018"
print(paste("The year is", 2019))
## [1] "The year is 2019"
print(paste("The year is", 2020))
## [1] "The year is 2020"

Kontrol Loop for

Menggunakan loop for, script bisa dipersingkat

for (i in 2015:2020) {
  print(paste("The year is", i))
}
## [1] "The year is 2015"
## [1] "The year is 2016"
## [1] "The year is 2017"
## [1] "The year is 2018"
## [1] "The year is 2019"
## [1] "The year is 2020"

Kontrol Loop for

Contoh lain menghitung luas lingkaran dengan jari-jari yang bervariasi dari 1 s/d 10

for (r in 1:10) {
  print(2*pi*r^2)
}
## [1] 6.283185
## [1] 25.13274
## [1] 56.54867
## [1] 100.531
## [1] 157.0796
## [1] 226.1947
## [1] 307.8761
## [1] 402.1239
## [1] 508.938
## [1] 628.3185

Menulis function

Menulis function

TUGAS

1.Buat fungsi (function()) untuk menghitung kovariansi antara 2 variabel. Kemudian hitung kovariansi antara 2 variabel berikut:

x <- c(1,2,3,4,5,6,7,8)
y <- c(10,9,8,7,6,5,4,3)

2.Misalkan \(y_0 = 0\). Diberikan model runtun waktu sebagai berikut:

\(y_t = 2y_{t-1} + 2\)

Untuk \(t=1,2,...,10\), hitung berapa \(y_t\) dengan menggunakan perintah loop for.