Anda di halaman 1dari 13

MODUL 6

PEMROGRAMAN R

6.1 Deskripsi Singkat


Salah satu keunggulan utama menggunakan R environment adalah kemudahan dan
fleksibilitas yang diberikan kepada pengguna untuk menuliskan sendiri program dan fungsi yang
mereka butuhkan. Hal ini sangat penting ketika pengguna memerlukan metode analisa yang tidak
standard, yang lebih mutahir sehingga belum tersedia di paket program statistik manapun.
Kemudahan inilah yang menjadikan pengguna R melesat dalam beberapa tahun ini dikarenakan
banyak analisa kompleks yang memerlukan pengembangan metode statistika yang adopsinya
oleh software berbayar sangat lambat.

Sintaks pemrograman R sangat mudah dipelajari, bahkan untuk pengguna yang tidak
memiliki pengalaman pemrograman sebelumnya. Setelah struktur kontrol pemrograman R dasar
dipahami, pengguna dapat menggunakan bahasa R sebagai environment yang sangat powerful
untuk melakukan analisis kompleks dari hampir semua jenis data..

6.2 Tujuan Praktikum


Setelah praktikum pada modul 6 ini diharapkan mahasiswa mempunyai kompetensi sebagai
berikut:
1) Dapat mengetahui struktur pemrograman dengan menggunakan R
2) Dapat memahami sintaks-sintaks dasar dalam pemrograman R sehingga kemudian mampu
membuat fungsi-fungsi untuk analisis statistik.

6.3 Material Praktikum


Pada kegiatan modul 1 diperlukan beberapa material berupa file, yaitu:
1) Software R dan R-Studio.
2) Contoh Data eksternal.

6.4 Kegiatan Praktikum


A. Struktur Kontrol
Struktur kontrol di dalam bahasa pemrograman adalah perintah dengan bentuk (struktur)
tertentu yang digunakan untuk mengatur (mengontrol) jalannya program.

Terdapat dua jenis struktur kontrol, yaitu:

1. Struktur kontrol keputusan – digunakan untuk memutuskan kode program mana yang
akan dikerjakan berdasarkan suatu kondisi. Struktur control keputusan merupakan
percabangan dalam program, baik percabangan 2 jalur atau lebih. Struktur kontrol
keputusan yang paling umum digunakan dalam R adalah
2. Struktur kontrol pengulangan (loop)– digunakan untuk melakukan pengulangan kode
program. Struktur loop yang paling umum digunakan dalam R adalah for, while,
dan apply. Selain itu ada juga perintah repeat, namun jarang digunakan. Fungsi
break digunakan untuk keluar dari loop, dan selanjutnya menghentikan pengolahan
iterasi saat ini dan kemajuan indeks perulangan.

Yang termasuk struktur control keputusan:


- If statement
- ifelse statement
- switch statement
Yang termasuk struktur control pengulangan:
- For loop
- While loop
- Repeat loop

a) If dan if … else …
Berikut adalah sintaks untuk if statement:
if(cond1=true) { cmd1 }
atau
if(cond1=true) { cmd1 } else { cmd2 }
if statement hanya untuk vector berukuran 1.
Berikut adalah contoh dari if-else:
Contoh 1
> w = 3
> if( w < 5 ) {
+ d=2 }
+ else {
+ d=10 }
[1] 2

> x <- 1:15

Contoh 2
> if(sample(x,1)≤ 10) {
+ print(“x kurang dari sama dengan 10”)}
+ else {
+ print(“x lebih dari 10”) }
[1] “x kurang dari sama dengan 10”

Catatan : perintah sample(x,1) artinya ambil sampel acak dari x sebanyak satu sampel.

b) ifelse
Ifelse dapat digunakan untuk object tipe vector dengan panjang n. Sintaks:
ifelse(test, true_value, false_value)

Cobalah contoh berikut:


Contoh 3
> x <- 1:10 # Creates sample data

> ifelse(x<5 | x>8, x, 0)


[1] 1 2 3 4 0 0 0 0 9 10

> ifelse(x > 5, "high", "low")


[1]"low" "low" "low" "low" "low" "high" "high" "high" "high" "high"

c) switch
Untuk memilih lebih dari 2 pilihan, kita dapat menggunakan fungsi switch() dimana
input nya adalah berupa expresi dari input yang diinginkan serta pilihan yang tersedia.
Sintaks yang digunakan:
switch(EXPR, ...)

Jika EXPR terisi bilangan integer, maka itu menunjukkan urutan dari pilihan yang
diberikan seperti pada contoh berikut:
Contoh 4

x <- switch(3,
"first",
"second",
"third",
"fourth"
)
> x
[1] "third"

Sedangkan jika input pada EXPR adalah berupa string, maka akan dicocokkan dengan
nama pilihan yang tersedia, seperti contoh berikut:
Contoh 5

> x <- c(2,6,4,8,6,4,3,1)


> inpt <- readline("Pilih: 1. mean 2. median : ")
Pilih: 1. mean 2. median : 1
> choose <- switch(inpt,
+ "1" = mean(x),
+ "2" = median(x))
> if (inpt == "1"){
+ print(paste("Mean x = ", choose))
+ } else {if (inpt == "2"){
+ print(paste("Median x = ", choose))} else {print("ERROR")}
+ }
[1] "Mean x = 4.25"

d) for
Loop ini dikendalikan oleh sebuah vektor perulangan. Sedangkan jumlah iterasi loop
didefinisikan dengan jumlah nilai yang disimpan dalam vektor perulangan dan akan
diproses dalam urutan yang sama seperti yang disimpan dalam vektor perulangan.
Sintaks:
for (vector counter)
{
Statements
}

Contoh 6
> h <- seq(from=1, to=10)
> s <- c() ## definisikan objek “s”
> for(i in 1:10) ## lakukan iterasi sebanyak 10x
+ {
+ ## memasukkan nilai pada objek h ke objek s
+ s[i] <- h[i] * 10
+ }
> s
[1] 10 20 30 40 50 60 70 80 90 100

Kita dapat juga memasukkan nilai iterasi per baris dari sebuah matrix seperti contoh
dibawah ini:
Contoh 7
> ## 1. menghitung kuadrat
> sqr <- seq(1, 10, by=2)
> sqr
[1] 1 3 5 7 9
> res <- NULL ## definisikan vector hasil
> resMat <- matrix(NA,5,2) ## definisikan matrik untuk hasil
> for (i in 1:5) {
+ res [i] <- sqr[i]^2
+ resMat[i,] <- c(i, sqr[i]^2)
+ }
> resMat
[,1] [,2]
[1,] 1 1
[2,] 2 9
[3,] 3 25
[4,] 4 49
[5,] 5 81
> res
[1] 1 9 25 49 81

> ## 2. contoh penggunaan stop untuk menghentikan iterasi


> x <- 1:20
> y <- NULL
> for(i in seq(along=x)) {
+ if (x[i] < 10 ) {
+ y <- c(y,x[i]-1)
+ } else {
+ stop("nilai x harus lebih kecil dari 10")
+ }
+ }
Error: nilai x harus lebih kecil dari 10
> y
[1] 0 1 2 3 4 5 6 7 8

e) while
Statemen while sama dengan for loop, hanya iterasinya di control oleh sebuah kondisi
berupa ekspresi. Selain itu perbedaan keduanya adalah for digunakan jika banyaknya
perulangan diketahui sebelumnya, sedangkan while jika kita tidak tahu banyaknya
perulangan tidak diketahui, namun kita mengetahui kondisi untuk menghentikan
pengulangan yang disebut stopping condition.

Yang perlu diperhatikan adalah bahwa pastikan stopping condition pasti tercapai, jika tidak
akan terjadi perulangan tak hingga.

Sintaks:

while(condition) statements
Perbandingan for dan while:
Contoh 8
for(i in 0:4){ z <- 0
z <- z + 2 # kenaikan 2 while(z < 10) { ## print selama z < 10
print(z) z <- z + 2 # kenaikan 2
} print(z)
}
[1] 2
[1] 2
[1] 4
[1] 4
[1] 6
[1] 6
[1] 8
[1] 8
[1] 10
[1] 10
Contoh while lainnya:
Contoh 9
> # Variable initialization
> n <- 0
> square <- 0

> # While loop


> while(square <= 4000) {
+ n <- n + 1
+ square <- n ^ 2
+ }
> n
> square
[1] 64
[2] 4096

f) repeat
Untuk repeat, kondisi diberikan di akhir statemen. Sintaks:

repeat{ statements...
if(condition){
break
}
}

Cobalah contoh berikut:


Contoh 10
> sum <- 1
> repeat
+ {
+ sum <- sum + 2;
+ print(sum);
+ if (sum > 11)
+ break;
+ }
[1] 3
[1] 5
[1] 7
[1] 9
[1] 11
[1] 13

Perbedaan while dan repeat:


Contoh 11
z <- 0 > z <- 0
## print selama z < 10 > repeat
while(z < 10) { + {
z <- z + 2 # kenaikan 2 z <- z + 2 # kenaikan 2
print(z) print(z)
} if(z > 10)
[1] 2 break;
[1] 4 }
[1] 6 [1] 2
[1] 8 [1] 4
[1] 10 [1] 6
[1] 8
[1] 10
[1] 12

Perbandingan di atas juga menunjukkan pada repeat perintah di eksekusi terlebih dahulu
baru kemudian dicek memenuhi kondisi atau tidak. Sedangkan pada while pengecekan
kondisi ada di awal, sehingga eksekusi sintaks akan berhenti pada iterasi berbeda. Hal ini
harus jadi pertimbangan kita saat menulis script. Jika ingin program berhenti sebelum kondisi
terlampaui, maka bisa gunakan perintah while.

B. Apply, sapply, dan lapply


Selain dari perintah looping diatas, R memiliki fungsi/command yang dapat melakukan
looping secara cepat yaitu keluarga fungsi apply yaitu apply, tapply, lapply dan
sapply. Fungsi ini merupakan salah satu keunggulan R, sehingga jika memerlukan
perulangan, usahakan gunakan keluarga apply function, dibandingkan loop seperti for-loop
atau while.

a. Apply
Fungsi ini digunakan untuk input data dengan 2 dimensi. Sintaks:
apply(X, MARGIN, FUN, ARGs)
dimana:
X :array 2 dimensi, matriks atau data.frame,
MARGIN : 1 untuk baris dan 2 untuk kolom dan , c(1,2) untuk keduanya;
FUN : fungsi yang ingin dijalankan;
ARGs : argument yang diperlukan untuk fungsi yang telah didefinisikan.
Cobalah beberapa contoh penggunaan apply berikut:
Contoh 12
> data(cars) ## Menggunakan data yang telah ada di R
> head(cars)
speed dist
1 4 2
2 4 10
3 7 4
4 7 22
5 8 16
6 9 10

## apply dengan menggunakan fungsi yang telah ada


> apply(cars, 2, mean) ## Mengitung rata2 per kolom
speed dist
15.40 42.98

> apply(cars[1:3,], 1, mean) ## Mengitung rata2 per baris


1 2 3
3.0 7.0 5.5

> apply(cars, 2, sd) ## Standard Deviasi per kolom


speed dist
5.287644 25.769377

Kita juga bisa menggunakan fungsi sendiri:


Contoh 13
## Menggunakan fungsi yang kita buat sendiri ##
# membuat fungsi (akan dijelaskan bag setelah ini)
> x <- 1:15
> test <- function(x) {
+ if(x < 10) {
+ x-1
+ } else {
+ x / x
+ }
+ }
> apply(as.matrix(x), 1, test)
[1] 0 1 2 3 4 5 6 7 8 1 1 1 1 1 1
b. tapply

Fungsi ini berguna untuk melakukan implementasi dari sebuah fungsi ke array atau vector
berjenis kategorik. Sintaks:

tapply(vector, factor, FUN)


Cobalah contoh berikut:
Contoh 14
> data(iris)
> 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

# Menghitung rata-rata dari Petal.Width (kolom ke 4)


# pada setiap species (kolom ke 5)

> tapply(as.vector(iris[,4]), factor(iris[,5]), mean)


setosa versicolor virginica
0.246 1.326 2.026

Fungsi ini hanya dapat digunakan pada vector, jika ingin melakukan hal yang sama ke
matriks atau data frame maka dapat menggunakan fungsi aggregate:

Contoh 15
> ## Rata2 setiap variabel pada setiap spesies
> aggregate(iris[,1:4], list(iris$Species), mean)
Group.1 Sepal.Length Sepal.Width Petal.Length Petal.Width
1 setosa 5.006 3.428 1.462 0.246
2 versicolor 5.936 2.770 4.260 1.326
3 virginica 6.588 2.974 5.552 2.026
c. lapply, sapply

Fungsi lain yang termasuk dalam keluarga fungsi apply adalah


lapply dan sapply dimana keduanya dapat digunakan pada vector atau objek bertipe
list. Fungsi lapply akan menghasilkan sebuah list sedangkan sapply akan menghasilan
sebuah vector atau matriks.

Sintaks:
lapply(X, FUN)
sapply(X, FUN)

Contoh 16:
> mylist <- as.list(cars[1:5,]) ## membuat list
> mylist
$speed
[1] 4 4 7 7 8

$dist
[1] 2 10 4 22 16

## 1. Menghitung jumlah pada setiap elemen di list mylist d


## Hasilnya berupa list
> lapply(mylist, sum)
$speed
[1] 30
$dist
[1] 54

## 2. Menghitung jumlah pada setiap elemen di list mylist d


## Hasilnya berupa vektor
> sapply(mylist, sum)
speed dist
30 54
C. Fungsi
Untuk kegiatan yang dilakukan secara berulang-ulang atau sangat kompleks, maka lebih baik
kita membuat sebuah fungsi (function) yang dapat kita panggil/gunakan sehingga pekerjaan
kita akan lebih efektif. Namun sebelum kita membuat fungsi sendiri, lihat apakah fungsi yang
diinginkan telah dibuat oleh orang lain. Untuk membuat sebuah fungsi khusus untuk tujuan
tertentu dalam R sangatlah mudah.
Struktur sintaks untuk sebuah fungsi adalah:

name <- function(arg1, arg2, … ) {


expression
}
Arg1, Arg2 .. adalah argumen yang akan diberikan kepada ekspresi berikutnya. Untuk
mengembalikan (me-return) hasil perhitungan dari ekspresi yang diberikan gunakan perintah
return().

Berikut contoh dari pembuatan fungsi di R:


Contoh 17
> ## 1. Fungsi pangkat
> pangkat <- function(x,pow) x^pow
> pangkat (2,5)
[1] 32
> ## 2. Fungsi Jumlah nilai ##
> intsum <- function(from, to)
+ {
+ sum <- 0
+ for (i in from:to)
+ sum <- sum + i
+ return(sum)
+ }
> intsum(from=3, to=10)
[1] 52
> intsum(3, 10)
[1] 52
TUGAS

Untuk tugas ini, downloadlah data dari link berikut: https://s.stis.ac.id/zAXkh

Kemudian kerjakan soal berikut:

1. Buatlah fungsi sendiri untuk menghitung mean dan standar deviasi! (Tulis script sendiri,
jangan menggunakan fungsi mean dan sd yang sudah ada)
2. Dengan menggunakan fungsi di atas, hitunglah mean dan standar deviasi dari nilai
mahasiswa pada keempat mata kuliah tersebut.
3. Dengan menggunakan fungsi di atas, hitunglah mean nilai yang diperoleh setiap
mahasiswa.
4. Jika mean nilai mahasiswa > 80 statusnya dinyatakan “Baik, 65 – 80 “Cukup”, dan < 65
“Kurang”, bagaimanakah status nilai dari mahasiswa B, G, dan O?

Anda mungkin juga menyukai