1 Dasar-Dasar R

R merupakan bahasa pemprograman yang digunakan dalam analisis dan manipulasi data statistika (pemodelan statistika). Software ini pertama kali dikembangkan oleh Ross Ihaka dan Robert Gentlement di University of Auckland New Zealand, R merupakan akronim dari nama depan kedua pembuatnya. Munculnya R terinspirasi oleh bahasa statistika dengan nama S (statistical language S). Bahasa statistika S diciptakan oleh John Chambers dan rekan, di Bell Labs atau AT&T Bell Laboratories. Hal yang membedakan antara keduanya adalah R merupakan sistem komputasi yang bersifat gratis.

1.1 Assignment

Berbeda dengan bahasa pemrograman pada umumnya, jika bahasa pemrograman yang lain menggunakan tanda “=” sebagai operator assigment, di R yang paling utama digunakan adalah operator panah kiri (<-), perhatikan contoh berikut:

data1 <- 1
data2 = 2
data1
## [1] 1
data2
## [1] 2

1.2 Case-sensitive

R memiliki karakteristik yang berbeda dengan bahasa pemrograman lain seperti C++,python, dll. R memiliki aturan/sintaks yang berbeda dengan bahasa pemrograman yang lain yang membuatnya memiliki ciri khas tersendiri dibanding bahasa pemrograman yang lain. Salah satu ciri R adalah bahasanya bersifat case sensitif. maksudnya adalah dalam proses input R huruf besar dan kecil sangat diperhatikan. Sebagai contoh perbedaan antara objek Z dan z pada sintaks berikut:

Z <- "Arif"
z <- "arif"
Z==z
## [1] FALSE

1.3 Penamaan objek

R memiliki berbagai fleksibilitas dalam memberikan nama variabel, namun demikian beberapa aturan penamaan variabel yang perlu diketahui adalah sebagai berikut:

  • Menggunakan huruf besar (kapital) yaitu huruf A-Z juga menggunakan huruf kecil yaitu huruf (a-z).
  • Menggunakan karakter numerik (0-9), juga titik (.) atau garis bawah (**_**).
  • Tidak dapat menggunakan spasi, misalnya penulisan variabel:“harga buku” adalah contoh yang salah dalam penamaan variabel, bisa diganti dengan variabel seperti ini: “harga.buku”
  • Variabel yang dibuat adalah case sensitive artinya pengetikkannya harus persis sama dan membedakan antara huruf besar dan huruf kecil. Misalnya Hargabuku dan hargabuku adalah dua variabel yang berbeda.
  • Penamaan variabel sebaiknya mulai dengan huruf, meski Anda bisa memberikan nama variabel dengan _hargabuku atau .hargabuku hanya saja penamaan itu tidak disarankan
  • Sebaiknya hindari menggunakan kata-kata yang sama dengan perintah-perintah yang dikenal dalam R seperti: if, else, repeat, while, function, for,in, next, break, TRUE, FALSE, NULL, NA, NA_integer dan sebagainya.

1.4 Packages

Package R merupakan koleksi dari fungsi R yang mengandung kode dan contoh sampel data. Tersimpan di direktori “library” di program R. Pada program bawaannya telah terinstall beberapa package. Package yang lain ditambahkan sesuai dengan kebutuhan analisis pengguna. Untuk menginstall package dapat dilakukan dengan dua cara yaitu menggunakan fungsi yang sudah disediakan pada interface RGui atau RStudio atau dengan cara mengetik sintax install(“nama_package)” pada console. Seluruh package tersimpan di server yang dapat diakses secara online dan proses intallasi hanya dapat dilakukan jika terdapat jaringan internet.

1.5 RStudio

RStudio merupakan salah satu bentuk frontend R yang cukup populer dan nyaman digunakan. Selain nyaman digunakan, RStudio memungkinkan kita melakukan penulisan laporan menggunakan Rmarkdown atau RNotebook serta membuat berbagai bentuk project seperti shyni, dll. Pada R studio juga memungkinkan kita mengatur working directory tanpa perlu mengetikkan sintaks pada Commander, yang diperlukan hanya memilihnya di menu RStudio. Selain itu, kita juga dapat meng-import file berisikan data tanpa perlu mengetikkan pada Commander dengan cara memilih pada menu Environment. (Mohammad Rosidi)

2 Objek di R

R merupakan sebuah paket dan sekaligus bahasa pemrograman yang dapat digunakan secara interaktif sehingga hasil perhitungan segera dapat dilihat, tetapi apabila perhitungannya kompleks maka perintah-perintah R ditulis lebih dahulu dalam text editor, kemudian dipanggil dengan fungsi source. Berikut beberapa contoh dasar penggunaan objek di R.

2.1 Vektor

Untuk membuat vektor digunakan bantuan fungsi c(). Vector dapat berisi tipe data skalar seperti number, character atau logical. Misalkan kita ingin membuat vektor a dengan elemen nilai 2,4,7,dan 3 maka kita bisa menuliskan sintax a <- c(2,4,7,3) di source atau console. apabila menulis sintax di source maka kita harus memanggil variabel a untuk menampilkan nilai vektor tersebut. selain menggunakan operator “<-” kita juga bisa menggunakan assign() seperti contoh berikut:

a <- c(2,4,7,3)
a
## [1] 2 4 7 3
assign("b", c(2,4,7,3))
b
## [1] 2 4 7 3

2.1.1 Baris Bilangan {seq()}

untuk membuat baris bilangan dalam R kita bisa menggunakan fungsi seq(), fungsi ini dapat digunakan untuk membuat vektor berurutan dan dengan increment tertentu. Berikut beberapa contoh aplikatif dari seq():

  • Elemennya berurutan, misalnya kita ingin membuat vektor yang elemennya angka 1 sampai 10.
c <- seq(1,10)
c
##  [1]  1  2  3  4  5  6  7  8  9 10
  • Elemennya berurutan dan memiliki jarak, misalnya kita ingin membuat vektor dengan elemen angka 1 sampai 10 dan jarak setiap elemen adalah 0.5.
d <- seq(1,10, by=0.5)
d
##  [1]  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  6.0  6.5  7.0  7.5  8.0
## [16]  8.5  9.0  9.5 10.0
  • Elemennya berurutan dan jumlah elemennya tertentu, misalnya ingin membuat vektor yang elemennya dari angka 1 sampai 10 tetapi jumlah elemennya 12.
e <- seq(1,10,length.out = 12)
e
##  [1]  1.000000  1.818182  2.636364  3.454545  4.272727  5.090909  5.909091
##  [8]  6.727273  7.545455  8.363636  9.181818 10.000000

2.1.2 Bilangan Berulang {rep()}

Untuk membuat bilangan berulang di R kita bisa mengggunakan fungsi rep(), sintax ini dapat digunakan untuk membuat sebuah vektor dengan mengulang-ulang nilai yang diinginkan sebanyak yang dibutuhkan. Berikut beberapa contoh penggunaan rep():

  • Perulangan angka yang sama sebanyak n kali, misal kita ingin membuat vektor dengan elemen angka 3 sebanyak 5 kali.
f1 <- replicate(5,3) # cara 1
f2 <- rep(3,5) # cara 2
f1
## [1] 3 3 3 3 3
f2
## [1] 3 3 3 3 3
  • Jumlah pengulangan yang berbeda tiap angka, misalnya kita ingin membuat vektor dengan elemen nilai 1 sampai 3 dimana angka 1 diulang 2 kali, angka 2 diulang 0 kali dan angka 3 diulang 4 kali.
g <- rep(1:3,c(2,0,4)) # angka berurutan
g
## [1] 1 1 3 3 3 3
g1 <- rep(c(3,5,12),c(4,2,5)) # angka acak
g1
##  [1]  3  3  3  3  5  5 12 12 12 12 12
  • Pengulangan dengan panjang yang bisa dibatasi, misalnya kita ingin membuat vektor yang elemennya memuat perulangan angka 1 sampai 5 tapi panjang nya adalah 8 angka.
h <- rep(1:5,length.out=8) # cara 1
h1 <- rep_len(1:5,8) # cara 2
h
## [1] 1 2 3 4 5 1 2 3
h1
## [1] 1 2 3 4 5 1 2 3
  • Pengulangan angka yang berurutan, misalnya kita ingin membuat vektor dengan elemen angka 1 sampai 3 sebanyak 3 kali perulangan.
i <- rep(1:3,3) 
i 
## [1] 1 2 3 1 2 3 1 2 3
  • Pengulangan angka sebanyak angkanya, misalnya kita ingin membuat vektor dengan elemen angka 1 sebanyak 1, angka 2 sebayak 2 dan seterusnya.
j <- rep(1:7,1:7)
j
##  [1] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 7
  • Pengulangan setiap elemen sebanyak n kali, misalnya ingin membuat vektor yang elemennya anga 1 sampai 6 dan setiap elemen diulang 3 kali.
k <- rep(1:6, rep(3,6)) # cara 1
k1 <- rep(1:6, each=3) # cara 2
k
##  [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6
k1
##  [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6

2.1.3 Karakter Berpola {paste()}

Berikut beberapa contoh dasar pada penggunaan fungsi paste() ketika ingin membuat vektor berpola:

  • Membuat vektor yang elemennya merupakan karakter yang berurutan.
l<-paste("A",1:10,sep="") # cara 1
l1 <- paste0("A",1:10) # cara 2
l
##  [1] "A1"  "A2"  "A3"  "A4"  "A5"  "A6"  "A7"  "A8"  "A9"  "A10"
l1
##  [1] "A1"  "A2"  "A3"  "A4"  "A5"  "A6"  "A7"  "A8"  "A9"  "A10"
  • Membuat vektor dengan penambahan beberapa karakter dengan fungsi sep()
m<-paste("A",1:10,sep="-")
m1<-paste0("A",k) # menggunakan elemen vektor k
m
##  [1] "A-1"  "A-2"  "A-3"  "A-4"  "A-5"  "A-6"  "A-7"  "A-8"  "A-9"  "A-10"
m1
##  [1] "A1" "A1" "A1" "A2" "A2" "A2" "A3" "A3" "A3" "A4" "A4" "A4" "A5" "A5" "A5"
## [16] "A6" "A6" "A6"

2.1.4 Akses Vektor

Berikut beberapa contoh sintax yang bisa digunakan untuk mengakses elemen pada vektor tertentu.

m1[3] # menampilkan elemen ke-3 vektor m1
## [1] "A1"
m1[10:15] # menampilkan elemen ke-10 sampai elemen ke-15 vektor m1
## [1] "A4" "A4" "A4" "A5" "A5" "A5"
m1[c(4,7,9)] # menampilkan elemen ke-4,7,9 vektor m1
## [1] "A2" "A3" "A3"
m1[-c(1:2)] # menghapus elemen ke-1 dan ke-2 vektor m1
##  [1] "A1" "A2" "A2" "A2" "A3" "A3" "A3" "A4" "A4" "A4" "A5" "A5" "A5" "A6" "A6"
## [16] "A6"
length(m1) # menampilkan jumlah elemen pada vektor m1
## [1] 18

2.1.5 latihan 1

Tentukan output syntax program berikut: c(“la”,“ye”)[rep(c(1,2,2,1),times=4)] c(“la”,“ye”)[rep(rep(1:2, each=3),2)]

c("la","ye")[rep(c(1,2,2,1),times=4)]
##  [1] "la" "ye" "ye" "la" "la" "ye" "ye" "la" "la" "ye" "ye" "la" "la" "ye" "ye"
## [16] "la"
c("la","ye")[rep(rep(1:2, each=3),2)]
##  [1] "la" "la" "la" "ye" "ye" "ye" "la" "la" "la" "ye" "ye" "ye"

2.1.6 Latihan 2

Buatlah syntax agar dihasilkan output vektor sebagai berikut: X1 Y2 X3 Y4 X5 Y6 X7 Y8 X9 Y10 1 4 7 10 13 16 19 22 25 28

nilai <- seq(1,28, by=3)
names(nilai) <- c("X1", "Y2","X3","Y4","X5","Y6","X7","Y8","X9","Y10")
nilai
##  X1  Y2  X3  Y4  X5  Y6  X7  Y8  X9 Y10 
##   1   4   7  10  13  16  19  22  25  28

2.2 Matrix

Matriks pada dasarnya seperti Excel sheet yang berisi banyak baris dan kolom (kumpulan bebrapa vektor). Matriks digunakan untuk menggabungkan vektor dengan tipe yang sama, yang bisa berupa numerik, karakter, atau logis. Matriks digunakan untuk menyimpan tabel data dalam R. Baris-baris matriks pada umumnya adalah individu / pengamatan dan kolom adalah variabel. Untuk membuat sebuah matrix di R, kita bisa menggunakan fungsi matrix(). ### Contoh Matrix Misalnya kita ingin membuat suatu matriks dengan nama “mat”, jumlah baris sebanyak 2, jumlah kolom sebanyak 2, dan elemen-elemen pada matriks y adalah 3, 3, 2, dan 1, maka sintax nya adalah:

mat <- matrix(c(3,3,2,1), nrow=2, ncol=2) 
mat
##      [,1] [,2]
## [1,]    3    2
## [2,]    3    1

Berikut beberapa contoh lain yang bisa digunakan ketika ingin membuat matrix di R:

  • Membuat matrix b1 yang urutan elemennya berdasarkan kolom (elemennya dari angka 1 sampai 12).
b0 <- 1:12
b1 <- matrix(b0,4,3)
b1
##      [,1] [,2] [,3]
## [1,]    1    5    9
## [2,]    2    6   10
## [3,]    3    7   11
## [4,]    4    8   12
  • Membuat matrix b2 yang urutan elemennya berdasarkan baris (elemennya dari angka 1 sampai 12).
b2 <- matrix(b0,3,4,byrow = T)
b2
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12

2.2.1 Mengubah Objek Vektor ke matrix

Berikut cara mengubah objek vektor b0 menjadi matrix b4 dengan jumlah baris 6 dan jumlah kolom 2:

b4 <- b0
dim(b4) <- c(6,2)
b4
##      [,1] [,2]
## [1,]    1    7
## [2,]    2    8
## [3,]    3    9
## [4,]    4   10
## [5,]    5   11
## [6,]    6   12

2.2.2 Menggabungkan Baris dan Kolom

Ketika ingin menggabung baris atau kolom pada objek matrix, kita bisa menggunakan fungsi “rbind()” atau “cbind()” sebagaimana contoh berikut, b8 adalah matrix orde 4x2 yang merupakan gabungan matrix b5 dan b7 dengan orde 2x2 (digabungkan berdasarkan baris), sedangkan b9 adalah matrix orde 2x6 yang merupakan gabungan matrix b7, b6 dan b5 dengan orde 2x2 (digabungkan berdasarkan kolom) :

b5 <-matrix(2:5,2) # matrix dengan baris 2 dan kolom 2 
b6 <-matrix(1:4,2) # matrix dengan baris 2 dan kolom 2 
b7 <-matrix(6:9,2) # matrix dengan baris 2 dan kolom 2 
b8 <-rbind(b5,b7) 
b9 <-cbind(b7,b6,b5) 
b8
##      [,1] [,2]
## [1,]    2    4
## [2,]    3    5
## [3,]    6    8
## [4,]    7    9
b9
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,]    6    8    1    3    2    4
## [2,]    7    9    2    4    3    5

2.2.3 Akses Matrix

Berikut beberapa cara mengakses elemen-elemen pada matrix tertentu:

  • Fungsi dim() bisa digunakan untuk mengetahui jumlah baris dan kolom sebuah matrix. sedangkan length() digunakan untuk mengetahui jumlah elemen sebuah matrix.
dim(b8)
## [1] 4 2
dim(b9)
## [1] 2 6
dim(b5)
## [1] 2 2
length(b9)
## [1] 12
  • Mengubah baris ke-2 kolom ke-3 matrix b2 menjadi 1000.
b2[2,3]=1000 
b2
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6 1000    8
## [3,]    9   10   11   12
  • Menampilkan elemen matrix b2 pada baris ke-2 kolom ke-3
b2[2,3] 
## [1] 1000
  • Memampilkan elemen matrix b2 pada baris ke-2 kolom ke-2,3,4
b2[2,2:4]
## [1]    6 1000    8
  • Menampilkan elemen matrix b2 pada kolom ke-3
b2[,c(3)]
## [1]    3 1000   11
  • Menampilkan elemen matrix b2 pada baris pertama sampai baris ke-2
b2[1:2,] 
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6 1000    8
  • Menghapus elemen matrix b2 pada baris ke-2 dan kolom ke-2
b2[c(1,3),-2]
##      [,1] [,2] [,3]
## [1,]    1    3    4
## [2,]    9   11   12
  • Menampilkan elemen ke-10 matrix b2 yang dihitung berdasarkan kolom
b2[10] 
## [1] 4
  • Menghapus Baris pertama matrix b4
b11 <- b4[-c(1),]
b4
##      [,1] [,2]
## [1,]    1    7
## [2,]    2    8
## [3,]    3    9
## [4,]    4   10
## [5,]    5   11
## [6,]    6   12
b11
##      [,1] [,2]
## [1,]    2    8
## [2,]    3    9
## [3,]    4   10
## [4,]    5   11
## [5,]    6   12
  • Menghapus kolom pertama matrix b4
b12 <- b4[,-c(1)]
b12
## [1]  7  8  9 10 11 12

2.3 Array

Array merupakan matrix yang memiliki baris, kolom, dimensi dan buku yang bisa dibuat dengan fungsi dim=c(k,l,m,n) dimana k menyatakan baris, l menyatakan kolom, m menyatakan banyaknya dimensi atau lembar dan n menyatakan banyaknya buku. Berikut beberapa contoh matrix array yang elemennya dari vektor a14:

a14 <- 1:12
a14
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12
  • Array matrix dengan ordo 2x2 dan dimensi sebanyak 3 lembar
c1<-array(a14,dim=c(2,2,3))
c1
## , , 1
## 
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
## 
## , , 2
## 
##      [,1] [,2]
## [1,]    5    7
## [2,]    6    8
## 
## , , 3
## 
##      [,1] [,2]
## [1,]    9   11
## [2,]   10   12
  • Array matrix ordo 2x1 dengan dimensi sebanyak 2 lembar dan 3 buku
c2<-array(a14,dim=c(2,1,2,3))
c2
## , , 1, 1
## 
##      [,1]
## [1,]    1
## [2,]    2
## 
## , , 2, 1
## 
##      [,1]
## [1,]    3
## [2,]    4
## 
## , , 1, 2
## 
##      [,1]
## [1,]    5
## [2,]    6
## 
## , , 2, 2
## 
##      [,1]
## [1,]    7
## [2,]    8
## 
## , , 1, 3
## 
##      [,1]
## [1,]    9
## [2,]   10
## 
## , , 2, 3
## 
##      [,1]
## [1,]   11
## [2,]   12
  • Array matrix ordo 1x2 dengan dimensi sebanyak 4 lembar dan 2 buku
c3 <-array(a14,dim=c(1,2,4,2))
c3
## , , 1, 1
## 
##      [,1] [,2]
## [1,]    1    2
## 
## , , 2, 1
## 
##      [,1] [,2]
## [1,]    3    4
## 
## , , 3, 1
## 
##      [,1] [,2]
## [1,]    5    6
## 
## , , 4, 1
## 
##      [,1] [,2]
## [1,]    7    8
## 
## , , 1, 2
## 
##      [,1] [,2]
## [1,]    9   10
## 
## , , 2, 2
## 
##      [,1] [,2]
## [1,]   11   12
## 
## , , 3, 2
## 
##      [,1] [,2]
## [1,]    1    2
## 
## , , 4, 2
## 
##      [,1] [,2]
## [1,]    3    4
  • Array matrix ordo 3x4 tanpa lembar dan buku
c4 <-array(a14,dim=c(3,4))
c4
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12

2.3.1 Akses Array

Berikut beberapa contoh sintax dalam menakses elemen matrix Array:

  • Menampilkan matrix dengan elemen lembar ke-1 dari array c2
c2[,,1,]
##      [,1] [,2] [,3]
## [1,]    1    5    9
## [2,]    2    6   10
  • Menampilkan matrix dengan elemen buku ke-2 dari array c2
c2[,,,2] 
##      [,1] [,2]
## [1,]    5    7
## [2,]    6    8
  • Menampilkan elemen matrix lembar ke-1 buku ke-3 dari array c2
c2[,,1,3] 
## [1]  9 10

2.4 Factor

Factor dapat dibentuk dari vektor, jika ada kebutuhan untuk mengkategorikan nilai-nilai yang dimiliki oleh suatu variable maka faktor dapat memberikan kemudahan. Fungsifactor() dalam R dapat digunakan untuk mengetahui keragaman level pada data vektor. Misalkan diberikan data 1, 2, 3, 2, 1, 4, 6, 3, 2, 6, 2, 4, 5, 3, 3, 2. Berdasarkan data tersebut terdapat 6 level yakni 1, 2, 3, 4, 5, dan 6.

2.4.1 Contoh penggunaan factor

Contoh lain misalnya pada variabel a15 berikut akan dibuat menjadi factor dengan nama variabel baru d1. Setelah diubah menjadi factor, vektor a15 akan terurut berdasarkan abjad dalam variabel d1 dan otomatis menjadi data yang bernilai nominal, sehingga A=1, AB=2, B=3, C=4.

a15 <- c("A","B","AB","O")
d1 <- factor(a15)
a15
## [1] "A"  "B"  "AB" "O"
d1
## [1] A  B  AB O 
## Levels: A AB B O

Jika ingin mengatur level vektor dengan urutan tertentu, kita bisa menggunakan sintax berikut:

d2 <-factor(a15,levels=c("O","A","B","AB"))
d2
## [1] A  B  AB O 
## Levels: O A B AB
levels(d2)
## [1] "O"  "A"  "B"  "AB"

cara lain agar level data sesuai dengan urutan yang dibuat yaitu dengan menggunakan fungsi ordered() seperti pada contoh berikut:

a16 <-c("SD","SMP","SMA")
d3 <-ordered(a16) #skala pengukuran ordinal
a16
## [1] "SD"  "SMP" "SMA"
d3
## [1] SD  SMP SMA
## Levels: SD < SMA < SMP

Berikut cara lain untuk membuat vektor a16 menjadi factor:

d4 <-ordered(a16, levels=a16)
d5 <-factor(a16, levels=a16, ordered=TRUE)
d4
## [1] SD  SMP SMA
## Levels: SD < SMP < SMA
d5
## [1] SD  SMP SMA
## Levels: SD < SMP < SMA
levels(d5)
## [1] "SD"  "SMP" "SMA"

2.4.2 Akses Factor

sama halnya dengan vektor pada umumnya, nilai tertentu pada data factor juga bisa di akses seperti contoh berikut, d1[2] untuk menampilkan elemen ke-2 yang ada dalam d1, sedangkan d4[2:3] menampilkan elemen ke-2 sampai ke-3 yang ada didalam d4:

d1[2]
## [1] B
## Levels: A AB B O
d4[2:3]
## [1] SMP SMA
## Levels: SD < SMP < SMA

2.5 List

Sebagaimana vektor, list juga merupakan wadah untuk menyimpan nilai. Perbedaannya adalah pada list, elemennya dapat bertipe apa saja dan tidak harus sama. Elemen dari suatu list dapat diakses dengan mengambil nama list dan nama elemen dari list yang dihubungkan dengan lambang “$”.

2.5.1 Membuat List dengan Fungsi list()

Dalam R, fungsi list() digunakan untuk membuat suatu list. Diberikan contoh membuat list bernama listku. Perhatikan bahwa pada list yang bernama listku terdiri dari 4 anggota list (list members) atau 4 vektor, yakni data1, data2, data3, dan data4. Elemen dari vektor data1 adalah 3, 2, dan 1, elemen dari vektor data2 adalah 1, 2, 3, dan 4, dan elemen dari data3 adalah “ari”, “arif”. Perintah R “mode(listku)” memperlihatkan bahwa variabel listku berjenis list.

listku <- list(data1=c(3,2,1), data2=c(1,2,3,4), data3=c("ari","arif"))
mode(listku)
## [1] "list"
listku
## $data1
## [1] 3 2 1
## 
## $data2
## [1] 1 2 3 4
## 
## $data3
## [1] "ari"  "arif"

2.5.2 Akses List

  • Untuk mengetahui jumlah anggota dari list maka digunakan fungsi length() seperti pada contoh berikut:
names(listku)
## [1] "data1" "data2" "data3"
length(listku)
## [1] 3
  • Perhatikan hasil dari perintah listku[1] dan listku[[1]] menunjukkan hasil yang berbeda. Jenis dari listku[1] adalah list, sementara jenis listku[[1]] adalah numeric (vektor berjenis numerik). Perintah listku[[1]] atau listku[[“data1”]] atau listku$data1 akan mengakses elemen dari anggota list pertama.
listku[1]
## $data1
## [1] 3 2 1
listku[[1]]
## [1] 3 2 1
  • Perintah listku[c(1,3)] bisa digunakan untuk mengakses anggota pertama dan keempat dari listku, yakni data1 dan data3 seperti contoh berikut:
listku[c(1,3)]
## $data1
## [1] 3 2 1
## 
## $data3
## [1] "ari"  "arif"
  • Mengganti Nama dari Anggota List

Jika ingin mengubah nama dari anggota list dapat diganti diberikan ilustrasi mengganti nama dari anggota list listku. Pada awalnya nama-nama anggota dari listku adalah data1, data2, data3. Perintah R names(listku)[3] <- c(“bukandata3”) bakan mengganti nama dari anggota list daftar yang ketiga (pada indeks ke-3) dengan nama “bukandata3”. Sementara perintah R names(listku)[c(1,2)] <- c(“bukandata1”, “bukandata2”) akan mengganti nama dari anggota list daftar yang pertama dan kedua (pada indeks ke-1 dan indeks ke-2) dengan nama “bukandata1” dan “bukandata2”.

names(listku)[3] <- c("bukandata3")
names(listku)[c(1,2)] <- c("bukandata1", "bukandata2")
names(listku)
## [1] "bukandata1" "bukandata2" "bukandata3"

2.6 Data Frame

Data frame merupakan kerangka data yang berbentuk tabel list dan berisi variable yang memiliki karakteristik seperti matrix. Berikut syarat list bisa diubah menjadi data frame:

− Komponennya harus berupa vektor (numeric, karakter atau logika), faktor, matriks numeric, list, atau data frame lainnya. − Matriks, list, dan data frame menyediakan banyak variable untuk data frame sebanyak kolom, elemen atau variable yang dimiliki/didefinisikan sebelumnya. 38 − Struktur vektor yang ditampilkan dalam bentuk variable suatu data frame harus memiliki panjang yang sama, struktur matriknya harus mempunyai ukuran baris yang sama.

2.6.1 Membuat Data Frame

Pada contoh ini, kita akan membuat data frame dengan variabel Nama, Tinggi (tinggi menyatakan tinggi badan dalam cm) dan Tahun (tahun menyatakan tahun lahir).

Nama <- c("Ana","Banu","Candra","Dedi","Elang","Fatu","Galih")
Tinggi <- c(169,158,182,176,150,160,172)
Tahun <- c(1996,2003,1993,1890,2007,2010,1993)
df <- data.frame(Nama,Tinggi,Tahun)
df

2.6.2 Akses Data Frame

  • Perintah info1 merupakan sintax untuk menampilkan kolom ke-2 sedangkan info2 menampilkan kolom 2 sampai kolom 3
info1 <- df[2]
info2 <- df[2:3]
info1
info2
  • Perintah info3 untuk menampilkan elemen dari variabel **Nama*
info3 <- df$Nama
info3
## [1] "Ana"    "Banu"   "Candra" "Dedi"   "Elang"  "Fatu"   "Galih"
  • Perintah colnames() untuk menampilkan nama variabel
colnames(df)
## [1] "Nama"   "Tinggi" "Tahun"
  • Perintah str() untuk menampilkan struktur dari objek
str(df) 
## 'data.frame':    7 obs. of  3 variables:
##  $ Nama  : chr  "Ana" "Banu" "Candra" "Dedi" ...
##  $ Tinggi: num  169 158 182 176 150 160 172
##  $ Tahun : num  1996 2003 1993 1890 2007 ...
  • Perintah summary() digunakan untuk menampilkan informasi statistik dari objek
summary(df)
##      Nama               Tinggi          Tahun     
##  Length:7           Min.   :150.0   Min.   :1890  
##  Class :character   1st Qu.:159.0   1st Qu.:1993  
##  Mode  :character   Median :169.0   Median :1996  
##                     Mean   :166.7   Mean   :1985  
##                     3rd Qu.:174.0   3rd Qu.:2005  
##                     Max.   :182.0   Max.   :2010

2.6.3 Latihan 3

Seorang peneliti merancang sebuah perancangan percobaan RAKL dengan 4 perlakuan dan 3 kelompok (anggaplah respon percobaan berupa baris bilangan). Bantulah peneliti tersebut untuk membuat raw data seperti output sebagai berikut!

Perl <- c("P1","P1","P1","P2","P2","P2","P3","P3","P3","P4","P4","P4")
Kel <- rep(1:3,4)
Resp <- seq(1,23, by=2)
data1 <- data.frame(Perl,Kel,Resp)
data1

3 Manajemen Data Frame

Manajemen data merupakan bagian penting dalam setiap proses analisa data. Proses import dan eksport data pada berbagai format penting untuk dipelajari. Selain itu, proses perapihan data sebelum analisa menjadi bagian yang harus ada pada awal proses analisa. Pada tulisan ini akan dibahas beberapa hal mengenai manajemen data frame diantaranya:

  • Membuat variabel baru dalam data frame
  • Subsetting data
  • Sorting data
  • Recoding data
  • Merging data
  • Reshaping data

3.1 Membuat Variabel Baru dalam Data Frame

Membuat variabel baru dalam data frame dapat dilakukan seperti membuat vektor, sintax yang bisa digunakan adalah

  • namadataframe$namavariabelbaru <- ekspresi
  • namadataframe[,nomorkolom] <- ekspresi

Sebagai contoh pada latihan 1 akan dibuat variabel baru dengan nama ‘baru1’ yang berisi nilai 12 sampai 1 secara berurutan.

data1$baru1<-12:1
data1

3.2 Subssetting Data

  • Dilakukan untuk akses sebagian data
  • Membuat ide logicuntuk diterapkan dalam vektor logicyang diinginkan
  • Fungsi yang digunakan: ==, !=, >, >=, <, <=, %in%, duplicated, is.na, is.null, is.numeric, dll…

3.2.1 Latihan 2

Apabila pada data1 yang terdiri dari 4 variabel akan ditampilkan data (data2) yang hanya termasuk kelompok 1 maka bisa menggunakan sintax berikut:

indeks1 <- data1$Kel == 1
data2 <- data1[indeks1,]
indeks1
##  [1]  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
data2

3.2.2 Latihan 3

Apabila pada data1 yang terdiri dari 4 variabel akan ditampilkan data (data3) yang hanya termasuk kelompok 1 atau perlakuan P2, kita bisa menggunakan sintax berikut:

indeks2 <- data1$Kel == 1 | data1$Perl == "P2"
data3 <- data1[indeks2,]
data3

3.2.3 Latihan 4

Apabila pada data1 yang terdiri dari 4 variabel akan ditampilkan data (data4) yang responnya merupakan bilangan prima, kita bisa menggunakan sintax berikut:

indeks3 <-data1$Resp %in% c(2,3,5,7,11,13,17,19,23)
data4 <-data1[indeks3,]
data4

3.3 Sorting Data

  • Dilakukan untuk mengurutkan data berdasarkan beberapa peubah tertentu
  • Dilakukan dengan membuat vektor logika untuk melakukan pengurutan data
  • Fungsi yang sering digunakan: order(…), sort(…), which(…), rev(…), unique(…)

3.3.1 Latihan 5

Apabila pada data1 yang terdiri dari 4 variabel akan ditampilkan data (data5) yang mana pada variabel kelompoknya diurut dari kecil ke besar (ascending), kita bisa menggunakan sintax berikut:

indeks4 <- order(data1$Kel)
data5 <- data1[indeks4,]
data5

3.3.2 Latihan 6

Apabila pada data1 yang terdiri dari 4 variabel akan ditampilkan data (data6) yang mana pada variabel kelompoknya diurut dari besar ke kecil (descending), kita bisa menggunakan sintax berikut:

indeks5 <- order(data1$Kel, data1$Resp, decreasing=TRUE)
data6 <- data1[indeks5,]
data6

3.3.3 Latihan 7

Apabila pada data1 yang terdiri dari 4 variabel akan ditampilkan data berdasarkan kelompok secara ascending (data7) dan respon secara descending (data8), kita bisa menggunakan sintax berikut:

indeks6 <- order(data1$Resp, decreasing=TRUE)
data7 <- data1[indeks6,]
indeks7 <- order(data7$Kel)
data8 <- data7[indeks7,]
data7
data8

3.3.4 Akses Sorting Data

  • Menampilkan data variabel Resp yang ada pada data8
data8$Resp
##  [1] 19 13  7  1 21 15  9  3 23 17 11  5
  • Menampilkan data terbalik dari variabel Resp yang ada pada data8
rev((data8$Resp))
##  [1]  5 11 17 23  3  9 15 21  1  7 13 19
  • Menampilkan data variabel Resp yang ada pada data8 dengan urutan data dari kecil ke besar
sort(data8$Resp)
##  [1]  1  3  5  7  9 11 13 15 17 19 21 23
  • Menampilkan indeks data8 dari data terkecil ke data terbesar
order(data8$Resp)
##  [1]  4  8 12  3  7 11  2  6 10  1  5  9
  • Menampilkan urutan data awal (data1) variabel Resp pada data8
rank(data8$Resp)
##  [1] 10  7  4  1 11  8  5  2 12  9  6  3
  • Melihat data mana pada variabel Resp yang nilainya besar 10
data8$Resp>10
##  [1]  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE
  • Melihat indeks data pada variabel Resp yang yang nilainya besar 10
which(data8$Resp>10)
## [1]  1  2  5  6  9 10 11
  • Menampilkan data variabel Resp yang nilainya lebih dari 10
data8$Resp[data8$Resp>10] # cara 1
## [1] 19 13 21 15 23 17 11
data8$Resp[which(data8$Resp>10)] # cara 2
## [1] 19 13 21 15 23 17 11

3.4 Recoding Data

  • Digunakan untuk membuat nilai baru dari nilai peubah yang sudah ada
  • Dapat dilakukan secara logical, fungsi if else(…), dan fungsi recode(…)

3.4.1 Latihan 8

Lakukanlah recoding pada data8 untuk variabel respon dengan kondisi jika respon<15 maka Code= 1, selainnya Code= 0

  • Dengan logical
data8$Code1 <-0*(data8$Resp>=15) + 1*(data8$Resp<15)
data8
  • Dengan fungsi ifelse()
data8$Code2 <-ifelse(data8$Resp<15,1,0)
data8
  • Dengan fungsi recode
library(car) # memanggil library car untuk fungsi recode()
## Loading required package: carData
data8$Code3 <- recode(data8$Resp,'1:14=1; else=0')
data8

3.5 Merging Data

Merging data adalah proses menggabungkan dua atau lebih kumpulan data menjadi satu kumpulan data. Seringkali, proses ini diperlukan ketika Anda memiliki data mentah yang disimpan dalam beberapa file, lembar kerja, atau tabel data, yang ingin Anda analisis semuanya sekaligus.

  • Bisa dilakukan dengan rbind(…)atau cbind(…)
  • Lebih mudah dengan fungsi merge(…)

3.5.1 Latihan 9

Pada latihan ini dibuat data frame baru yang diberi nama tabel1, kemudian digabungkan dengan data1 sehingga diperoleh data9 dan data 10 sebagai berikut:

tabel1 <- data.frame(Tr=c("P4","P2","P5"), k1=c(50,100,200))
tabel1
data9<-merge(data1, tabel1, by.x=1, by.y=1, all=FALSE)
data10<-merge(data1, tabel1, by.x="Perl",by.y="Tr",all=TRUE)
data9
data10

3.6 Reshaping Data

Dalam pemodelan prediktif, seringkali perlu untuk membentuk kembali data agar siap untuk melakukan analisis atau membangun model. Proses transformasi data menjadi bentuk yang jelas, sederhana, dan diinginkan merupakan komponen penting dari ilmu data yang biasa disebut dengan reshaping data.

  • Membentuk data baru dengan cara :
    • Long to wide format
    • Wide to long format
  • Menggunakan fungsi reshape(…)

3.6.1 Latihan 10

Pada latihan 10, data1 diubah menjadi data11 yang terdiri dari 3 variabel Resp, Resp.1 untuk kelompok 1, Resp 2 untuk kelompok 2, dan Resp 3 untuk kelompok 3. data12 adalah perubahan data data11 dengan direction long atau memanjang kebawah.

data1
data11 <-reshape(data1[,-4], idvar="Perl", timevar="Kel", direction="wide")
data11
data12 <-reshape(data11, idvar="Perl", timevar="Kel", direction="long")
data12