Dosen Pengampu : Prof. Dr. Suhartono, M.Kom

Lembaga : Universitas Islam Negeri Maulana Malik Ibrahim Malang

Jurusan : Teknik Informatika

Fakultas : Sains dan Teknologi


2.8 Matriks

Matriks seperti Excel sheet yang berisi banyak baris dan kolom (kumpulan beberapa 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.

2.8.1 Membuat Matriks

Untuk membuat matriks kita dapat menggunakan fungsi cbind() atau rbind(). Berikut adalah contoh sintaks untuk membuat matriks.

# membuat vektor numerik 
col1 <- c(5, 4, 6, 7, 8) 
col2 <- c(2, 4, 5, 9, 8) 
col3 <- c(7, 3, 4, 8, 7)
# menggabungkan vektor berdasarkan kolom 
my_data <- cbind(col1, col2, col3) 
my_data
##      col1 col2 col3
## [1,]    5    2    7
## [2,]    4    4    3
## [3,]    6    5    4
## [4,]    7    9    8
## [5,]    8    8    7
# Mengubah atau menambahkan nama baris 
rownames(my_data) <- c("row1", "row2", "row3", "row4", "row5") 
my_data
##      col1 col2 col3
## row1    5    2    7
## row2    4    4    3
## row3    6    5    4
## row4    7    9    8
## row5    8    8    7

Catatan:

  • cbind(): menggabungkan objek R berdasarkan kolom
  • rbind(): menggabungkan objek R berdasarkan baris
  • rownames(): mengambil atau menetapkan nama-nama baris dari objek seperti-matriks
  • colnames(): mengambil atau menetapkan nama-nama kolom dari objek seperti-matriks “‘

Kita dapat melakukan tranpose (merotasi matriks sehingga kolom menjadi baris dan sebaliknya) menggunakan fungsi t(). Berikut adalah contoh penerapannya:

t(my_data)
##      row1 row2 row3 row4 row5
## col1    5    4    6    7    8
## col2    2    4    5    9    8
## col3    7    3    4    8    7

Selain melalui pembentukan sejumlah objek vektor, kita juga dapat membuat matriks menggunakan fungsi matrix(). Secara sederhana fungsi tersebut dapat dituliskan sebagai berikut:

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
##      [,1]
## [1,]   NA

Catatan:

  • data: vektor data opsional
  • nrow, ncol: jumlah baris dan kolom yang diinginkan, masingmasing.
  • byrow: nilai logis. Jika FALSE (default) matriks diisi oleh kolom, jika tidak, matriks diisi oleh baris.
  • dimnames: Daftarduavektoryangmemberikannamabarisdan kolom masing-masing. “‘

Dalam kode R di bawah ini, data input memiliki panjang 6. Kita ingin membuat matriks dengan dua kolom. Kita tidak perlu menentukan jumlah baris (di sini nrow = 3). R akan menyimpulkan ini secara otomatis. Matriks diisi kolom demi kolom saat argumen byrow = FALSE. Jika kita ingin mengisi matriks dengan baris, gunakan byrow = TRUE. Berikut adalah contoh pembuatan matriks menggunakan fungsi matrix().

data <- matrix( data = c(1,2,3, 14,15,16), 
                nrow = 2, byrow = TRUE, 
                dimnames = list(c("row1", "row2"), 
                                c("C.1", "C.2", "C.3")) 
                ) 
data
##      C.1 C.2 C.3
## row1   1   2   3
## row2  14  15  16

Untuk mengetahui dimensi dari suatu matriks, kita dapat menggunakan fungsi ncol() untuk mengetahui jumlah kolom matriks dan nrow() untuk mengetahui jumlah baris pada matriks. Berikut adalah contoh penerapannya:

# mengetahui jumlah kolom 
ncol(my_data)
## [1] 3
# mengetahui jumlah baris 
nrow(my_data)
## [1] 5

Jika ingin memperoleh ringkasan terkait dimensi matriks kita juga dapat mengunakan fungsi dim() untuk mengetahui jumlah baris dan kolom matriks. Berikut adalah contoh penerapannya:

dim(my_data) # jumlah baris dan kolom
## [1] 5 3

2.8.2 Subset Pada Matriks

Sama dengan vektor, subset juga dapat dilakukan pada matriks. Bedanya subset dilakukan berdasarkan baris dan kolom pada matriks.

  • Memilih baris/kolom berdasarkan pengindeksan positif

baris atau kolom dapat diseleksi menggunakan format data[row, col]. Cara selesi ini sama dengan vektor, bedanya kita harus menetukan baris dan kolom dari data yang akan kita pilih. Berikut adalah contoh penerapannya:

# Pilih baris ke-3
my_data[3,]
## col1 col2 col3 
##    6    5    4
# Pilih baris 1 sampai 4 
my_data[1:4,]
##      col1 col2 col3
## row1    5    2    7
## row2    4    4    3
## row3    6    5    4
## row4    7    9    8
# Pilih baris 1 dan 4 
my_data[c(1,4),]
##      col1 col2 col3
## row1    5    2    7
## row4    7    9    8
  • Pilih berdasarkan nama baris/kolom

Berikut adalah contoh subset berdasarkan nama baris atau kolom.

# Pilih baris 1 dan kolom 3 
my_data["row1","col3"]
## [1] 7
# Pilih baris 1 sampai 4 dan kolom 3 
baris <- c("row1","row2","row3") 
my_data[baris, "col3"]
## row1 row2 row3 
##    7    3    4
  • Kecualikan baris/kolom dengan pengindeksan negatif

Sama seperti vektor pengecualian data dapat dilakukan di matriks menggunakan pengindeksan negatif. Berikut cara melakukannya:

# Kecualikan baris 2 dan 3 serta kolom 3 
my_data[-c(2,3), -3]
##      col1 col2
## row1    5    2
## row4    7    9
## row5    8    8
  • Pilihan dengan logik

Dalam kode R dibawah ini, misalkan kita ingin hanya menyimpan baris dimana col3> = 4:

col3 <- my_data[, "col3"] 
my_data[col3 >= 4, ]
##      col1 col2 col3
## row1    5    2    7
## row3    6    5    4
## row4    7    9    8
## row5    8    8    7

2.8.3 Perhitungan Menggunakan Matriks

Kita juga dapat melakukan operasi matematika pada matriks. Pada operasi matematika pada matriks proses yang terjadi bisa lebih kompleks dibanding pada vektor, dimana kita dapat melakukan operasi untuk memperoleh gambaran data pada tiap kolom atau baris.

Berikut adalah contoh operasi matematika sederhana pada matriks:

# mengalikan masing-masing elemen matriks dengan 2
my_data*2
##      col1 col2 col3
## row1   10    4   14
## row2    8    8    6
## row3   12   10    8
## row4   14   18   16
## row5   16   16   14
# memperoleh nilai log basis 2 pada masing-masing elemen matriks 
log2(my_data)
##          col1     col2     col3
## row1 2.321928 1.000000 2.807355
## row2 2.000000 2.000000 1.584963
## row3 2.584963 2.321928 2.000000
## row4 2.807355 3.169925 3.000000
## row5 3.000000 3.000000 2.807355

Seperti yang telah penulis jelaskan sebelumnya, kita juga dapat melakukan operasi matematika untuk memperoleh hasil penjumlahan elemen pada tiap baris atau kolom dengan menggunakan fungsi rowSums() untukbarisdan colSums() untuk kolom.

# Total pada tiap kolom 
colSums(my_data)
## col1 col2 col3 
##   30   28   29
# Total pada tiap baris 
rowSums(my_data)
## row1 row2 row3 row4 row5 
##   14   11   15   24   23

Untuk mencari nilai rata-rata tiap baris arau kolom kita juga dapat menggunakan fungsi rowMeans() atau colMeans(). Berikut adalah contoh penerapannya:

# Rata-rata tiap baris 
rowMeans(my_data)
##     row1     row2     row3     row4     row5 
## 4.666667 3.666667 5.000000 8.000000 7.666667
# Rata-rata tiap kolom 
colMeans(my_data)
## col1 col2 col3 
##  6.0  5.6  5.8

Kita juga dapat melakukan perhitungan statistika lainnya menggunakan fungsi apply(). Berikut adalah format sederhananya:

apply(x, MARGIN, FUN)

Catatan:

  • x : data matriks
  • MARGIN : Nilai yang dapat digunakan adalah 1 (untuk operasi pada baris) dan 2 (untuk operasi pada kolom)
  • FUN : fungsi yang diterapkan pada baris atau kolom

untuk mengetahui fungsi (FUN) apa saja yang dapat diterapkan pada fungsi apply() jalankan sintaks bantuan berikut:

help(apply)
## starting httpd help server ... done

Berikut adalah contoh penerapannya:

# Rata-rata pada tiap baris 
apply(my_data, 1, mean)
##     row1     row2     row3     row4     row5 
## 4.666667 3.666667 5.000000 8.000000 7.666667
# Median pada tiap kolom 
apply(my_data, 2, median)
## col1 col2 col3 
##    6    5    7

Beberapa pembahasan yang lebih lengkap akan dibahas pada beb berikutnya, mungkin itu dulu pembahasan mengenai matriks dan operasi yang bisa dilakukan matriks menggunakan R.

R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00

Including Plots

You can also embed plots, for example:

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.