- 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
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
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)
<-
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
Secara umum ada 4 tipe data dalam R
numeric
: tipe data berupa angkacharacter
: tipe data berupa huruf/angkalogical
: tipe data berupa TRUE/FALSE
date
: tipe data tanggalUntuk mengetahui tipe data dalam R dapat digunakan fungsi class()
a <- 2 class(a)
## [1] "numeric"
b <- "statistika" class(b)
## [1] "character"
c <- 5 > 2 class(c)
## [1] "logical"
d <- as.Date("2020-01-09") class(d)
## [1] "Date"
R memiliki 6 cara untuk menyimpan data dalam bentuk objek, yaitu
vector
factor
matrix
data.frame
list
array
c()
digunakan untuk membuat vektorx <- c(7, 8, 10, 45) x
## [1] 7 8 10 45
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 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
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
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
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
Tersedia berbagai macam fungsi pada vektor dengan perintah:
mean()
, median()
, sd()
, var()
, max()
, min()
, length()
, sum()
: memberikan satu nilaisort()
memberikan vektor baru yang sudah diuruthist()
membuat histogramecdf()
memberikan objek fungsi peluang kumulatifsummary()
memberikan 5 ringkasan nilai statistik dalam bentuk vektorFactor
merupakan vektor yang dikhususkan untuk menangani data kategorikjenisKelamin <- 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"
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
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
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
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>
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
Data frame dapat juga dipanggil melalui data eksternal (import data):
read.table()
memuat data dalam bentuk txtread.csv()
dipakai untuk memuat data dalam bentuk csvcontoh: 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
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
getwd()
setwd()
digunakan untuk mengganti working directory.getwd()
## [1] "E:/dna/UIN/Courses/Komputasi Statistik/2020/markdown"
setwd("E:/dna/UIN/Courses/Komputasi Statistik/")
Looping
Function
If statement
(tidak dibahas dalam materi ini)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
for
Menuliskan for
dalam R dengan sintak dasar berikut:
for (nilai dalam vektor){ kode perintah/pernyataan }
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"
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"
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
function
Menulis fungsi bisa menggunakan perintah function()
yang akan tersimpan dalam bentuk objek.
Fungsi (function
) adalah kode yang disusun untuk melakukan tugas tertentu, seperti perhitungan matematis, pembacaan data, analisis statistik, dan lainnya. function()
di R identik dengan fungsi \(f(x)\) di matematika yang akan memetakan nilai \(x_1\) ke \(f(x_1)\) sesuai dengan aturan pemetannya. Di R, function()
juga membutuhkan input (seperti \(x_1\))
Sebagai contoh membuat fungsi menghitung lingkaran.
luas.lingkaran <- function(r) { 2*pi*r^2 } luas.lingkaran(7)
## [1] 307.8761
function
Contoh menghitung rata-rata. Di R sudah tersedia bisa menggunakan perintah mean()
.
rataan <- function(x) { sum(x) / length(x) } a <- c(3,1,0,4,5,2,2) rataan(a)
## [1] 2.428571
mean(a)
## [1] 2.428571
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
.