Anda di halaman 1dari 98

2.

Mengenal bahasa R
Dr. Rukman Hertadi
Tentang R
· R adalah perangkat lunak yang dibuat untuk menangani pengolahan data statistik dan
visualisasi gra k
· R base dapat diunduh di https://cran.r-project.org/bin/windows/base/

· Untuk memudahkan koding dengan R, dapat digunakan R Studio yang dapat diperoleh di
https://www.rstudio.com/products/RStudio/

2/98
Tampilan dasar R Studio

3/98
Configuring R to Use an HTTP or HTTPS Proxy
Pada konsol ketikan perintah berikut:

file.edit('~/.Renviron')

Isikan data berikut pada le .Renviron

options(internet.info = 0)
http_proxy=http://cache.itb.ac.id:8080
http_proxy_user=user:passwd

https_proxy=https://cache.itb.ac.id:8080
https_proxy_user=user:passwd

4/98
Setting your working directory
Langkah pertama sebelum membuat program biasakan menyiapkan terlebih dahulu direktori
kerja tempat menampung semua program.

Untuk menset direktori kerja yang akan digunakan pada R Studio, pilih menu Session,
kemudian pilih Set Working Directory, selanjutnya pilih Choose Directory.

Cara lain adalah dengan mengetikan perintah berikut pada Console:

#Untuk Mac
setwd("~/mydirectory")

#Untuk Windows
setwd("C:/Sharon/Documents/RProjects")

5/98
Installing and using packages
R telah dilengkapi dengan berbagai paket (library) yang berisi fungsi-fungsi khusus, misalkan
untuk pengolahan gra k, statistik dll.

Window Packages pada R Studio menampilkan paket apa saja yang telah terinstall.

Untuk menambah paket baru gunakan perintah berikut pada Console:

install.packages("thepackagename")

Untuk keperluan praktikum, install paket ggplot2, reshape2, cowplot, pid, rsm, rmarkdown,
knitr.

# Install paket ggplot2


install.packages("ggplot2")

6/98
Aplikasi R

7/98
R Sebagai kalkulator
2+2

## [1] 4

exp(10)

## [1] 22026.47

rnorm(15)

## [1] 0.9966067 -0.7342292 0.8053947 0.5274054 -0.9618456 0.3156859


## [7] 0.3212107 -0.6254746 2.1372572 -0.4204345 -0.5995466 1.4863350
## [13] 0.8975117 0.3289445 -0.8712281

8/98
R untuk pemrograman
· Contoh pemrograman sederhana

x <- 2 #Menyimpan angka 2 pada variabel x


x + x

## [1] 4

x^3 #X pangkat 3

## [1] 8

log10(x) #Menghitung nilai logaritma berbasis 10

## [1] 0.30103

9/98
Fungsi R: Membuat grafik
library(ggplot2)
set.seed(1)
df <- data.frame(PF = 10*rnorm(1000))
ggplot(df, aes(x = PF)) +
geom_histogram(aes(y =..density..),
breaks = seq(-40, 40, by = 5),
colour = "black",
fill = "white") +
stat_function(fun = dnorm, args =
list(mean = mean(df$PF),
sd = sd(df$PF)), color = "red") +
xlim(-40,40) +
theme_classic()

10/98
Strukur data R

11/98
Struktur data di R
1. Vektor
2. Matriks

3. List
4. Data Frame

5. Faktor

· Untuk memeriksa tipe struktur data dapat dilakukan dengan fungsi class()

12/98
1. Vektor

13/98
Vektor
· Vektor adalah struktur data paling dasar di R.
· Tipe vektor bisa numerik (integer, double), logika, karakter dll

a <- c(1, 2, 2.5, 6, -2, 4) #Tipe data numerik


b <- c("one", "two", "three") #Tipe data karakter
c <- c(TRUE, TRUE, FALSE, TRUE, FALSE) #Tipe data logika

14/98
Membuat vektor dengan Fungsi c
· Fungsi c singkatan dari concatenate atau menggabungkan. Jadi fungsi ini hanya digunakan
untuk menggabungkan lebih dari satu data. Data tunggal tidak perlu menggunakan fungsi c.

· Contoh:

d1 <- 3.5; d1 #Data tunggal tidak memerlukan fungsi c

## [1] 3.5

d2 <- c(42, 57, 12, 39, 1, 3, 4); d2

## [1] 42 57 12 39 1 3 4

15/98
Membuat vektor dengan menggunakan operator
x <- 1:7; x

## [1] 1 2 3 4 5 6 7

y <- 2:-2; y

## [1] 2 1 0 -1 -2

16/98
Membuat vektor dengan fungsi seq()
· Fungsi seq() digunakan untuk membuat urutan data numerik dengan beda tetap.

· Contoh:

seq(1, 3, by=0.2) # specify step size

## [1] 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0

seq(1, 5, length.out=4) # specify length of the vector

## [1] 1.000000 2.333333 3.666667 5.000000

d <- seq(0, 10, 2); d #menyimpan data 0 - 10 dengan dengan nilai selisih 2

## [1] 0 2 4 6 8 10

17/98
Membuat vektor dengan fungsi rep()
· Fungsi rep (replicate) digunakan untuk membuat data berulang.

· Contoh:

x<-c(1,2,3)
rep(x,3) #semua nilai pada x, diulang 3 kali

## [1] 1 2 3 1 2 3 1 2 3

rep(1:2,c(10,15)) #angka 1 diulang 10 kali, angka 2 diulang 15 kali

## [1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

18/98
Mengakses elemen pada vektor dengan indeks
Mengakses elemen pada vektor dilakukan dengan menggunakan indeks. Indeks sendiri dapat
berupa bilangan bulat dimulai dari angka 1,2,3 dst. bisa juga berupa logika, atau karakter.
Contoh:

x <- c(2, 5, 8, 10, 23)


x[3] #menampilkan elemen pada indeks ke-3

## [1] 8

x[c(2,4)] #menampilkan elemen pada indeks ke-2 dan ke-4

## [1] 5 10

x[-1] #menampilkan semua elemen kecuali elemen pertama

## [1] 5 8 10 23

19/98
Memodifikasi vektor
x <- c(2, 5, 8, 10, 23)
x[2] <- 7; x #mengubah elemen ke-2

## [1] 2 7 8 10 23

x[x < 8] <- 4; x #mengubah elemen kurang dari 8 menjadi 4

## [1] 4 4 8 10 23

x <- x[1:4]; x #memotong data variabel menjadi 4 elemen pertama

## [1] 4 4 8 10

20/98
Menghapus vektor
x <- c(2, 5, 8, 10, 23); x

## [1] 2 5 8 10 23

x <- NULL; x

## NULL

21/98
2. Matriks

22/98
Matriks
· Matriks adalah struktur data dua dimensi dalam pemrograman R

· Matriks mirip dengan vektor tetapi memiliki atribut tambahan. Semua atribut dari suatu
objek dapat ditampilkan dengan fungsi attribute().

· Untuk mengecek ukuran dimensi matriks bisa dilakukan dengan fungsi dim().

· Untuk mengecek apakah suatu variabel merupakan matriks atau bukan dengan fungsi
class()

23/98
Membuat matriks dengan fungsi matrix()
· Matriks dapat dibuat dengan fungsi matrix().

· Dimensi dari matriks ditetapkan melalui nilai argumen nrow dan ncol.

· Contoh:

set.seed(123)
x <- rnorm(n = 9, mean = 5, sd = 1)
round(x,2)

## [1] 4.44 4.77 6.56 5.07 5.13 6.72 5.46 3.73 4.31

matrix(round(x,2), nrow = 3, ncol = 3)

## [,1] [,2] [,3]


## [1,] 4.44 5.07 5.46
## [2,] 4.77 5.13 3.73
## [3,] 6.56 6.72 4.31

· Perhatikan bahwa nilai akan tersusun ke arah kolom.


24/98
Membuat matriks dengan fungsi matrix()
· Bila diinginkan matriks tersusun ke arah baris, maka harus ditambahkan argumen
byrow=TRUE.

· Contoh:

set.seed(123)
x <- rnorm(n = 9, mean = 5, sd = 1)
round(x,2)

## [1] 4.44 4.77 6.56 5.07 5.13 6.72 5.46 3.73 4.31

matrix(round(x,2), nrow = 3, ncol = 3, byrow = TRUE)

## [,1] [,2] [,3]


## [1,] 4.44 4.77 6.56
## [2,] 5.07 5.13 6.72
## [3,] 5.46 3.73 4.31

25/98
Membuat matriks dengan fungsi matrix()
· Bisa juga memberikan nama pada baris dan kolom untuk matriks dengan menambahkan
nilai pada argumen dimnames.

· Nama baris dan kolom dapat ditampilkan dengan fungsi rownames() dan colnames()

x <- matrix(1:9, nrow = 3, dimnames = list(c("X","Y","Z"), c("A","B","C")))


x

## A B C
## X 1 4 7
## Y 2 5 8
## Z 3 6 9

rownames(x)

## [1] "X" "Y" "Z"

26/98
Membuat matriks dengan fungsi dim()
Vektor bisa diubah menjadi maktriks dengan fungsi dim(). Contoh:

x <- c(1,2,3,4,5,6)
class(x)

## [1] "numeric"

dim(x) <- c(2,3); x

## [,1] [,2] [,3]


## [1,] 1 3 5
## [2,] 2 4 6

class(x)

## [1] "matrix"

27/98
Membuat matriks dengan fungsi cbind() dan
rbind()
cbind(c(1,2,3),c(4,5,6)) #menyusun nilai ke arah kolom

## [,1] [,2]
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6

rbind(c(1,2,3),c(4,5,6)) #menyusun nilai ke arah baris

## [,1] [,2] [,3]


## [1,] 1 2 3
## [2,] 4 5 6

28/98
Mengakses elemen matriks dengan indeks
x <- matrix(1:9, nrow = 3, dimnames = list(c("X","Y","Z"), c("A","B","C")));x

## A B C
## X 1 4 7
## Y 2 5 8
## Z 3 6 9

x[2,3] #menampilkan elemen pada posisi baris ke-2 dan kolom ke-3

## [1] 8

x[c(1,2), c(2,3)] #menampilkan elemen pada baris ke 1 & 2 yg berada pada kolom ke 2 & 3

## B C
## X 4 7
## Y 5 8

29/98
Modifikasi matriks dalam R: tambah kolom/baris
x <- matrix(1:9, nrow = 3); x

## [,1] [,2] [,3]


## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9

cbind(x, c(1, 0, 5)) # tambah kolom rbind(x,c(1,0,7)) # tambah baris

## [,1] [,2] [,3] [,4] ## [,1] [,2] [,3]


## [1,] 1 4 7 1 ## [1,] 1 4 7
## [2,] 2 5 8 0 ## [2,] 2 5 8
## [3,] 3 6 9 5 ## [3,] 3 6 9
## [4,] 1 0 7

30/98
3. List

31/98
List
· List adalah struktur data pada R yang memiliki komponen campuran tipe data.

· List dibuat dengan fungsi list()

x <- list("a" = 2.5, "b" = TRUE, "c" = 1:3);x # membuat list dengan 3 komponen

## $a
## [1] 2.5
##
## $b
## [1] TRUE
##
## $c
## [1] 1 2 3

32/98
Mengakses komponen dalam list
x <- list(name = "John", age = 19, speaks = c("English", "French"))
x[c(1:2)] # menampilkan komponen ke-1 & 2

## $name
## [1] "John"
##
## $age
## [1] 19

x[-2] # menampilkan semua komponen kecuali yang ke-2

## $name
## [1] "John"
##
## $speaks
## [1] "English" "French"

33/98
Mengakses isi data komponen list
Isi data komponen list dapat diakses dengan menggunakn [[ atau $

x <- list(name = "John", age = 19, speaks = c("English", "French"))


x[["age"]] # akses data komponen dengan [[

## [1] 19

x$speaks # akses data komponen dengan $

## [1] "English" "French"

34/98
Menambah komponen pada list
x <- list(name = "John", age = 19, speaks = c("English", "French"))
x[["married"]] <- FALSE; x # menambahkan komponen status pernikahan

## $name
## [1] "John"
##
## $age
## [1] 19
##
## $speaks
## [1] "English" "French"
##
## $married
## [1] FALSE

35/98
Menghapus komponen pada list
x <- list(name = "John", age = 19, speaks = c("English", "French"))
x[["age"]] <- NULL; x

## $name
## [1] "John"
##
## $speaks
## [1] "English" "French"

36/98
4. Data frame

37/98
Data Frame
· Data frame adalah struktur data dua dimensi dalam R.

· Data frame adalah bentuk struktur data list yang memiliki panjang data yang sama pada
setiap komponenya.
· Setiap komponen akan membentuk kolom dan isi dari tiap komponen ada pada baris.

· Untuk membuat data frame digunakan fungsi dataframe()

x <- data.frame("SN" = 1:2, "Age" = c(21,15), "Name" = c("John","Dora")); x

## SN Age Name
## 1 1 21 John
## 2 2 15 Dora

class(x) # menampilkan tipe strutkur data

## [1] "data.frame"

38/98
Membuat data frame dari vektor
S <- c(0, 0.2, 0.4, 0.6, 0.8, 1.0)
V <- c(0, 15, 28, 29, 30, 30)
KE <- data.frame(S, V); KE

## S V
## 1 0.0 0
## 2 0.2 15
## 3 0.4 28
## 4 0.6 29
## 5 0.8 30
## 6 1.0 30

39/98
Membuat data frame dari file
· Untuk membaca data dari le digunakan fungsi read.table()

KP <- read.table("standarBSA.txt",header=T, sep="")


KP

## cons A
## 1 0.0 0.000
## 2 0.5 0.020
## 3 1.0 0.025
## 4 1.5 0.029
## 5 2.0 0.036
## 6 2.5 0.040
## 7 3.0 0.045

· File juga bisa dibuka dengan fungsi file.choose()

· contoh: KP <- read.table(file.choose(), header=T, sep="")

40/98
Mengakses komponen data frame: metode list
Mengakses data frame dengan metode list dapat dilakukan dengan operator [, [[ atau $.

x <- data.frame(SN = 1:2, Age = c(21,15), name = c("John","Dora"))

x["name"] x[["name"]]

## name ## [1] John Dora


## 1 John ## Levels: Dora John
## 2 Dora

x$name

## [1] John Dora


## Levels: Dora John

41/98
Mengakses komponen data frame: metode matriks
S <- c(0, 0.2, 0.4, 0.6, 0.8, 1.0)
V <- c(0, 15, 28, 29, 30, 30)
KE <- data.frame(S, V)

KE[2,] # komponen pada baris ke-2 KE[,1, drop = FALSE] # komponen pada kolom ke-1

## S V ## S
## 2 0.2 15 ## 1 0.0
## 2 0.2
## 3 0.4
KE[1:3,] # komponen pada baris 1 sd 3.
## 4 0.6
## 5 0.8
## S V ## 6 1.0
## 1 0.0 0
## 2 0.2 15
## 3 0.4 28

42/98
Modifikasi data frame: ubah data
S <- c(0, 0.2, 0.4, 0.6, 0.8, 1.0) KE[2,"V"] <- 13; KE
V <- c(0, 15, 28, 29, 30, 30)
KE <- data.frame(S, V); KE
## S V
## 1 0.0 0
## S V ## 2 0.2 13
## 1 0.0 0 ## 3 0.4 28
## 2 0.2 15 ## 4 0.6 29
## 3 0.4 28 ## 5 0.8 30
## 4 0.6 29 ## 6 1.0 30
## 5 0.8 30
## 6 1.0 30

43/98
Modifikasi data frame: tambah data
Tambah baris Tambah kolom

rbind(KE, c(2.0, 30)) cbind(KE, V2 = c(0, 12, 25, 35, 37, 37))

## S V ## S V V2
## 1 0.0 0 ## 1 0.0 0 0
## 2 0.2 13 ## 2 0.2 13 12
## 3 0.4 28 ## 3 0.4 28 25
## 4 0.6 29 ## 4 0.6 29 35
## 5 0.8 30 ## 5 0.8 30 37
## 6 1.0 30 ## 6 1.0 30 37
## 7 2.0 30

44/98
Modifikasi data frame: hapus data
KE

## S V
## 1 0.0 0
## 2 0.2 13
## 3 0.4 28
## 4 0.6 29
## 5 0.8 30
## 6 1.0 30

KE <- KE[-1:-2,]; KE # hapus komponen baris ke-1 & 2

## S V
## 3 0.4 28
## 4 0.6 29
## 5 0.8 30
## 6 1.0 30

45/98
Dasar pemrograman dengan R

46/98
Variabel
· Fondasi dari pemrograman adalah penggunaan variabel (alokasi memori penyimpan data)
dan pemberian nilai pada variabel.
· Pemberian nilai (assignment) pada variabel dalam bahasa R dilakukan dengan tanda (<-).

· Contoh: x <- 100; y <- 50

· Tanda titik koma (;) diperlukan bila dua pernyataan dituliskan dalam satu baris. Tapi tidak
diperlukan bila pernyataan ditulis dalam baris yang berbeda.
· Untuk memperjelas program, pada akhir pernyataan ditambahkan keterangan dengan
mengawali dengan tanda #. Contoh:

# Program penjumlahan variabel


x <- 5 # nilai variabel pertama
y <- 10 # nilai variabel kedua
x + y # penjumlahan variabel

## [1] 15

47/98
Operator aritmatika
Berikut adalah operator aritmatika dasar pada R

OPERATOR FUNGSI

+ penjumlahan

- pengurangan

* perkalian

/ pembagian

^ pemangkatan

Gunakan tanda kurung () bukan [] atau {} untuk pemisahan operasi. Contoh:

x <- 2
y <- -5
z <- 6
(x + y^2) * z/x

## [1] 81

48/98
Operator logika dan hubungan
Operator logika dan hubungan digunakan bila program ingin dieksekusi untuk kondisi tertentu.
Operator logika diberikan pada tabel berikut:

OPERATOR FUNGSI

& dan

! not

== sama dengan

!= tidak sama dengan

< lebih kecil dari

> lebih besar dari

<= lebih kecil sama dengan

=> lebih besar sama dengan

49/98
Seleski kondisi
· Operator logika biasanya digunakan pada q <- 3

pernyataan kondisional if and else. t <- 5


# if else conditional statement written on one line
Pernyataan if bisa digunakan sendiri atau if(q < t) {
besama dengan else. Bentuk w <- q + t
} else {
pernyataannya: w <- q - t

· if (the condition is true) then


}
w
{do this} else {do this}

## [1] 8

50/98
Seleksi kondisi
a <- 2
b <- 3
c <- 4
#Using and to test two conditions, both true
if (a < b & b < c) {x <- a + b + c}; x

## [1] 9

#Using or to test two conditions, one true


if ( a < b | a > c) { z <- a * b * c}; z

## [1] 24

51/98
Pengulangan proses
· for digunakan bila dalam program y <- vector(mode="numeric")

diperlukan proses berulang dengan for (i in 1:10 ) {


y[i] <- i^2
jumlah pengulangan telah diketahui. }
y
· Bentuk pernyatan: for (i in
awal:akhir) {tugas}
## [1] 1 4 9 16 25 36 49 64 81 100
· Contoh

52/98
Pengulangan bertingkat
· for dapat digunakan untuk proses pengulangan bertingkat, seperti pada pembuatan
matriks.

z <- matrix(nrow = 2, ncol = 4)


for (i in 1:2) {
for (j in 1:4) {
z[i,j] <- i + j
}
}
z

## [,1] [,2] [,3] [,4]


## [1,] 2 3 4 5
## [2,] 3 4 5 6

53/98
Pengulangan dengan while
· Pengulangan proses dengan while x<-0

digunakan bila jumlah proses tidak while ( x <= 5 ) {


x <- x^2 + 1
diketahui tetapi dibatasi dengan kondisi print(x)
yang ditetapkan. }

· Bentuk pernyataan while: while


## [1] 1
(condition controlling flow is ## [1] 2
true) {perform task}. ## [1] 5
## [1] 26

54/98
Fungsi
· Fungsi adalah modul yang berisi kode untuk melaksanakan proses tertentu dan
menampilkan hasilnya.
· Fungsi dibuat dengan bentuk pernyataan: functionName = function(arg1, arg2 ...)
{do this }

pangkat = function(x, y)
{
hasil = x^y
return(hasil)
}

pangkat(2,5) # memanggil fungsi pangkat

## [1] 32

55/98
Fungsi return()
Fungsi return() diperlukan untuk menampilkan hasil dari proses dalam fungsi.

Kondisi-1: hasil langsung ditampilkan tanpa Kondisi-2: hasil baru ditampilkan setelah
mengecek seluruh kondisi seluruh kondisi diperiksa

check1 = function(x) { check2 = function(x) {


if (x > 0) { if (x > 0) {
return("positive") result <- "positive"
} else if (x < 0) { } else if (x < 0) {
return("negative") result <- "negative"
} else { } else {
return("zero") result <- "zero"
} }
} return(result)
check1(12) }
check2(12)

## [1] "positive"
## [1] "positive"

56/98
Contoh fungsi
#Fungsi menggunakan return #Fungsi menggunakan cat
f1 = function(x, y) f2 = function(x, y)
{ {
z1 = 2*x + y; z1 = 2*x + y;
z2 = x + 2*y; z2 = x + 2*y;
return(list(r1 = z1, r2 = z2)); cat("z1 = 2x + y =",z1,"\n",
} "z2 = x + 2y =",z2);
}
f1(2,5)
f2(2,5)

## $r1
## [1] 9 ## z1 = 2x + y = 9
## ## z2 = x + 2y = 12
## $r2
## [1] 12

57/98
Fungsi penentuan akar kuadrat

58/98
Fungsi penentuan akar kuadrat
abc = function(a, b, c) {
cat("Solusi persamaan ",a,"x^2 +",b,"x +",c,"= 0\n");
D = b^2 - 4*a*c;
if (D == 0) {
x = -b/(2*a);
cat("Solusi akar kuadrat adalah sama, yaitu",x)
} else if (D > 0) {
x1 = (-b + sqrt(D))/(2*a); x2 = (-b - sqrt(D))/(2*a);
cat("Solusi akar kuadrat adalah",x1,"dan",x2);
} else {
print("Solusi akar kuadrat bersifat imajiner")
}
}
abc(1, -5, 6) #Contoh penggunaan fungsi

## Solusi persamaan 1 x^2 + -5 x + 6 = 0


## Solusi akar kuadrat adalah 3 dan 2

59/98
Fungsi faktorial
faktorial = function(x)
{
f = 1;
if (x == 0) {
f = 1;
} else if (x > 0) {
for (i in 1:x) {
f = f * i;
}
} else {
return("Input nilai tidak boleh negatif!")
}
print(f);
}
faktorial(4) #memanggil fungsi faktorial

## [1] 24

60/98
Menghitung nilai integral batas
· Nilai integral batas dapat ditentukan dengan metode kotak

b n

∗ ∗ ∗ ∗
f (x)dx ≈ f (x )Δx + f (x )Δx + ⋯ + f (xn )Δx = f (x ) Δx
1 2 i
∫ ∑
a [ ]
i=1

b − a

Δx = and x = a + iΔx i = 1, 2, 3, . . . , n
i
[ n ]

61/98
Fungsi R untuk menghitung nilai integral batas
#Persamaan untuk menghitung integral dari pers y = x^2 + 1
integral = function(a,b) {
n = 100;
dx = (b - a)/n;
sum = 0;
x = a + dx/2;
for (i in 1:n) {
y = x^2 + 1;
sum = sum + y;
x = x + dx;
}
int = sum * dx;
cat("Nilai integral fungsi f(x) = x^2 + 1 dg batas",a,"dan",b, "=",int);
}
integral(0,1) #Contoh penggunaan fungsi

## Nilai integral fungsi f(x) = x^2 + 1 dg batas 0 dan 1 = 1.333325

62/98
Menghitung nilai cosinus dengan deret tak hingga
Nilai cosinus dari sudut radian x dapat dihitung dengan persamaan berikut:
2 4 2n
x x x
n
cos(x) = 1 − − − ⋯ (−1)
2! 4! (2n)!
∞ n 2n
(−1) x
=
∑ (2n)!
n=0

63/98
Fungsi R untuk menghitung nilai cosinus
cosx = function(deg) {
x = pi * deg / 180; #konversi derajat ke radian
n = 1; term = 1; sum = 1;
epsilon = 0.000001;
repeat {
term = -term * x^2 /((2*n - 1)*2*n);
sum = sum + term;
n = n + 1;
if (abs(term) < epsilon) {
break;
}
}
cat("Nilai cos(",deg,") =",sum);
}
cosx(45) #Contoh penggunaan fungsi

## Nilai cos( 45 ) = 0.7071068

64/98
Fungsi bawaan R
Fungsi matematika Fungsi statistik

FUNGSI KETERANGAN FUNGSI KETERANGAN

sum(x) operasi penjumlahan semua elemen mean(x) nilai rata-rata


vektor x median(x) nilai tengah
sqrt(x) operasi akar kuadrat sd(x) simpangan baku
sin(x), cos(x), fungsi trigonometri var(x) varian
tan(x)
range(x) batas nilai bawah & atas
exp(x) eksponensial
diff(x) beda antar selang nilai
log(x) sama dengan ln(x)
min(x), max(x) nilai minimum dan maksimum
log10(x) logaritma basis 10

round(x) operasi pembuatan

65/98
Visualisasi data dalam bentuk grafik

66/98
Paket R yang diperlukan
· Periksa apakah paket ggplot2, plyr, ggthemes, dan reshape2 sudah ada dalam
daftar paket.
· Bila belum ada, ketikan perintah berikut pada konsol untuk memasangnya:

- install.packages("ggplot2", dependencies = TRUE)

- install.packages("plyr")

- install.packages("ggthemes")

- install.packages("reshape2")

67/98
ggplot2
· ggplot2 adalah paket R yang dikembangkan oleh Hadley Wickham untuk menghasilkan
gra k dengan kualitas baik.

· gg dalam ggplot2 berarti Grammar of Graphics, sebuah konsep pembuatan gra k yang
dibuat berdasarkan grammar (tata bahasa)

68/98
1. DATA

69/98
Data
· ggplot hanya mengenali struktur data dalam bentuk data frame

· Ada dua paket R yang sering digunakan untuk memanipulasi data frame, yaitu plyr dan
reshape2

· Fungsi pada paket plyr yang sering digunakan:

1. ddply

2. llply

3. join

· Fungsi pada paket reshape2 yang sering digunakan:

1. melt

2. dcast

3. acast

70/98
plyr: The split-apply-combine strategy for R
· plyr adalah paket R yang digunakan untuk memisahkan data, memanipulasi data dan
menggabungkannya kembali

· Format dasar dari fungsi dalam paket plyr adalah kobinasi dua huruf awal yang dikuti
dengan fungsi plyr(). Huruf awal menyatakan struktur data input dan huruf kedua
menyatakan struktur data output.

· Ada 3 huruf yang digunakan:

1. d = data frame
2. a = array (termasuk matriks)

3. l = list

· Contoh:

- ddply() artinya struktur data input dan output sama-sama data frame

- ldply() artinya struktur data input adalah list, sedangkan outputnya dataframe

71/98
Contoh
library(plyr) ## S cv.A
set.seed(1) ## 1 1 0.45578419
A <- vector(mode = "numeric") ## 2 2 0.22323144
for (i in 1:15) { ## 3 3 0.05570808
A[i] = runif(1, i, i+3) ## 4 4 0.10326160
} ## 5 5 0.08033758

d <- data.frame(S = rep(1:5,


each = 3), A)
dd <- ddply(d, "S", function(x) {
mean.A <- mean(x$A)
sd.A <- sd(x$A)
cv <- sd.A/mean.A
data.frame(cv.A = cv)
})

72/98
Transform
transform digunakan untuk memodi kasi
## S A total.A
data frame ## 1 1 1.796526 9.631458
## 2 1 3.116372 9.631458
## 3 1 4.718560 9.631458
library(plyr) ## 4 2 6.724623 21.024838
## 5 2 5.605046 21.024838
set.seed(1) ## 6 2 8.695169 21.024838
A <- vector(mode = "numeric") ## 7 3 9.834026 30.703761
for (i in 1:15) { ## 8 3 9.982393 30.703761
A[i] = runif(1, i, i+3) ## 9 3 10.887342 30.703761
} ## 10 4 10.185359 34.332953
## 11 4 11.617924 34.332953
d <- data.frame(S = rep(1:5, ## 12 4 12.529670 34.332953
each = 3), A) ## 13 5 15.061069 47.522904
dt <- ddply(d, "S", transform, ## 14 5 15.152311 47.522904
total.A = sum(A)) ## 15 5 17.309524 47.522904

73/98
summarise
summarise digunakan untuk memodi kasi
## S total.A mean.A
data frame dan menampilkan hasil ## 1 1 9.631458 3.210486
ringkasnya. ## 2 2 21.024838 7.008279
## 3 3 30.703761 10.234587
## 4 4 34.332953 11.444318
library(plyr) ## 5 5 47.522904 15.840968

set.seed(1)
A <- vector(mode = "numeric")
for (i in 1:15) {
A[i] = runif(1, i, i+3)
}

ds <- ddply(d, "S", summarise,


total.A = sum(A),
mean.A = mean(A))

74/98
The iris dataset
head(iris)

## Sepal.Length Sepal.Width Petal.Length Petal.Width Species


## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa

75/98
plyr
ddply(iris, "Species", summarize,
mean.Sep.Wid = mean(Sepal.Width, na.rm = TRUE))

## Species mean.Sep.Wid
## 1 setosa 3.428
## 2 versicolor 2.770
## 3 virginica 2.974

76/98
reshape2: melt & dcast
df <- melt(iris, id.vars = "Species") dcast(df, Species ~ variable, mean)

## Error in melt(iris, id.vars = "Species"): could not find ##


function
Error in
"melt"
dcast(df, Species ~ variable, mean): could not fi

print(df)

## PF
## 1 -6.26453811
## 2 1.83643324
## 3 -8.35628612
## 4 15.95280802
## 5 3.29507772
## 6 -8.20468384
## 7 4.87429052
## 8 7.38324705
## 9 5.75781352
## 10 -3.05388387
## 11 15.11781168
## 12 3.89843236
## 13 -6.21240581
## 14 -22.14699887
## 15 11.24930918
77/98
## 16 -0.44933609
2. AESTHETICS

78/98
Aesthetics
· aesthetics menerangkan tentang pemetaan data.

- variabel mana yang berperan sebagai x dan mana sebagai y


- selain itu bagian ini juga menerangkan tentang warna, ukuran, bentuk dll dari data yang
divisualkan.
· Contoh:

library(ggplot2)
myplot <- ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width))
summary(myplot)

## data: Sepal.Length, Sepal.Width, Petal.Length, Petal.Width,


## Species [150x5]
## mapping: x = ~Sepal.Length, y = ~Sepal.Width
## faceting: <ggproto object: Class FacetNull, Facet, gg>
## compute_layout: function
## draw_back: function
## draw_front: function
## draw_labels: function
## draw_panels: function
## finish_data: function
79/98
## init_scales: function
3. GEOMetry

80/98
Geom
· geom adalah singkatan dari geometry yang memberikan informasi mengenai pilihan
geometri dari plot.
· Contoh geometri: titik, garis, batang, poligon dll.
· Tabel pilihan fungsi pada geoms:

FUNGSI KETERANGAN

geom_point() grafik scatter

geom_line() grafik garis

geom_bar() grafik batang

geom_histogram() grafik histogram

81/98
Basic structure
· Tentukan data dan variabel yang akan
diguakan dalam fungsi ggplot(). Apapun
yang tertulis dalam fungsi ggplot()
bersifat global (berlaku secara
keseluruhan)
· Berikutnya tambahkan fungsi lain secara
berlapis: objek geometri, model statistik
dan paket.
· Contoh:

library(ggplot2)
p <- ggplot(data = iris,
aes(x = Sepal.Length,
y = Sepal.Width)) +
geom_point()

82/98
Estetika geom: menambah ukuran titik
library(ggplot2)
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point(size = 3)

83/98
Estetika geom: menambah warna
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
geom_point(size = 3)

84/98
Estetika geom: membedakan bentuk titik
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
geom_point(aes(shape = Species), size = 3)

85/98
Contoh komponen estetika lainnya
AESTHETICS KETERANGAN

theme_bw() menghilangkan warna latar:

ggtitle("Judul grafik") menambahkan judul grafik

theme(plot.title = element_text(face = "bold", size = 20)) mengatur ukuran karakter judul grafik secara manual

labs(x = "1/[S]", y = "1/V") menambahkan label sumbu secara manual

theme(axis.title=element_text(face="bold", size=18)) mengatur ukuran karakter label sumbu:

theme(axis.text = element_text(size = 14)) mengatur ukuran karakter skala sumbu

86/98
4. STATS

87/98
Statistik
ggplot2 memiliki tur untuk menambahkan analisis statistika. Contoh:

ggplot(data = iris, aes(x = factor(Species), y = Sepal.Width)) + geom_boxplot()

88/98
5. FACETS

89/98
Faceting: single column, multiple rows
facet adalah fungsi untuk membuat gra k
kisi. Contoh:

pb <- ggplot(iris,
aes(Sepal.Length,
Sepal.Width,
color = Species)) +
geom_point() +
facet_grid(Species ~ .)

90/98
Faceting: single row, multiple columns
ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) + geom_point() +
facet_grid(. ~ Species)

91/98
or just wrap your facets
ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) + geom_point() +
facet_wrap( ~ Species) # notice lack of .

92/98
6. SCALES

93/98
Scale
· Dalam ggplot, scale digunakan untuk pemetaan data pada tampilan estetika. Contohnya
dalam pemetaan warna terhadap data.

· Contoh:

- aes(color = variable) # mapping

- color = "black" # setting

- scale_fill_manual(values = c("color1", "color2"))

94/98
Pelet warna Brewer
library(RColorBrewer)
display.brewer.all()

95/98
Contoh penggunaan pelet warna Brewer
library(ggplot2)
library(reshape2)
library(RColorBrewer)
df <- melt(iris, id.vars = "Species")
pb <- ggplot(df,
aes(x = Species,
y = value,
fill = variable)) +
geom_bar(stat = "identity",
position = "dodge") +
scale_fill_brewer(palette = "Set1")
pb

96/98
Manual color scale
pc <- ggplot(iris,
aes(x = Sepal.Length,
y = Sepal.Width,
color = Species)) +
geom_point() +
facet_grid(Species ~ .) +
scale_color_manual(
values = c("red",
"green",
"blue"))

97/98
Scale lainnya
FUNGSI 1 FUNGSI 2

scale_x_continuous() scale_y_continuous()

scale_fill_discrete() scale_colour_discrete()

scale_fill_hue() scale_color_hue()

scale_fill_manual() scale_color_manual()

scale_fill_brewer() scale_color_brewer()

scale_linetype() scale_shape_manual()

98/98

Anda mungkin juga menyukai