Chapter 2 Kalkulasi Menggunakan R
Pada Chapter ini penulis akan menjelaskan bagaimana melakukan perhitungan menggunakan R
. Hal-hal yang akan dibahas pada chapter ini antara lain:
- Operator dan fungsi dasar pada
R
- Jenis dan struktur data
- Vektor (cara membuat dan melakukan operasi matematika pada vektor)
- Matriks (cara membuat dan melakukan operasi matematika pada matriks)
2.1 Operator Aritmatik
Proses perhitungan akan ditangani oleh fungsi khusus. R
akan memahami urutannya secara benar. Kecuali kita secara eksplisit menetapkan yang lain. Sebagai contoh jalankan sintaks berikut:
## [1] 10
Bandingkan dengan sintaks berikut:
## [1] 12
Tips:
R
dapat digunakan sebagai kalkulator
Berdasarkan kedua hasil tersebut dapat disimpulkan bahwa ketika kita tidak menetapkan urutan perhitungan menggunakan tanda kurung, R
akan secara otomatis akan menghitung terlebih dahulu perkalian atau pembangian.
Operator aritmatika yang disediakan R
disajikan pada Tabel 2.1:
Simbol | Keterangan |
---|---|
+ | Addition, untuk operasi penjumlahan |
- | Substraction, untuk operasi pengurangan |
* | Multiplication, untuk operasi pembagian |
/ | Division, untuk operasi pembagian |
^ | Eksponentiation, untuk operasi pemangkatan |
%% | Modulus, Untuk mencari sisa pembagian |
%/% | Integer, Untuk mencari bilangan bulat hasil pembagian saja dan tanpa sisa pembagian |
Untuk lebih memahaminya berikut contoh sintaks penerapan operator tersebut.
## [1] 8
## [1] 2
## [1] 15
## [1] 1.667
## [1] 125
## [1] 2
## [1] 1
Tips: Pada
R
tanda#
berfungsi menambahkan keterangan untuk menjelaskan sebuah sintaks padaR
2.2 Fungsi Aritmetik
Selain fungsi operator aritmetik, pada R
juga telah tersedia fungsi aritmetik yang lain seperti logaritmik, ekponensial, trigonometri, dll.
- Logaritma dan eksponensial
Untuk contoh fungsi logaritmik dan eksponensial jalankan sintaks berikut:
## [1] 3
## [1] 0.9031
## [1] 2981
- Fungsi trigonometri
fungsi trigonometri yang ditampilkan seperti sin,cos, tan, dll.
cos(x) # cos x
sin(x) # Sin x
tan(x) # Tan x
acos(x) # arc-cos x
asin(x) # arc-sin x
atan(x) #arc-tan x
Penting!!!
x dalam fungsi trigonometri memiliki satuan radian
Berikut adalah salah satu contoh penggunaannya:
## [1] -1
Pada Paket pracma
fungsi-fungsi trigonometri dapat ditambah lagi. Fungsi-fungsi tersebut antara lain:
cot(x) # cotan x
csc(x) # cosecan x
sec(x) # secan x
acot(x) # arc-cotan x
acsc(x) # arc-cosecan x
asec(x) # arc-secan x
- Fungsi Hiperbolik
fungsi hiperbolik yang tersedia antara lain:
Fungsi tersebut dapat ditambah lagi dari Paket pracma
. Fungsi-fungsi yang tersedia antara lain:
- Fungsi matematik lainnya
Fungsi lainnya yang dapat digunakan adalah fungsi absolut, akar kuadrat, dll. Berikut adalah contoh sintaks penggunaan fungsi absolut dan akar kuadrat.
## [1] 2
## [1] 2
2.3 Operator Relasi
Operator relasi digunakan untuk membandingkan satu objek dengan objek lainnya. Operator yang disediakan R
disajikan pada Tabel 2.2.
Simbol | Keterangan |
---|---|
“>” | Lebih besar dari |
“<” | Lebih Kecil dari |
“==” | Sama dengan |
“>=” | Lebih besar sama dengan |
“<=” | Lebih kecil sama dengan |
“!=” | Tidak sama dengan |
Berikut adalah penerapan operator pada tabel tersebut:
## [1] FALSE
## [1] TRUE
## [1] FALSE
## [1] FALSE
## [1] TRUE
## [1] TRUE
2.4 Operator Logika
Operator logika hanya berlaku pada vektor dengan tipe logical, numeric, atau complex. Semua angka bernilai 1 akan dianggap bernilai logika TRUE
. Operator logika yang disediakan R
dapat dilihat pada Tabel 2.3.
Simbol | Keterangan |
---|---|
“&&” | Operator logika AND |
" | |
“!” | Opeartor logika NOT |
“&” | Operator logika AND element wise |
" | " |
Penerapannya terdapat pada sintaks berikut:
## [1] FALSE
## [1] TRUE
## [1] FALSE FALSE TRUE
## [1] FALSE FALSE FALSE
## [1] TRUE TRUE FALSE
Penting!!!
- operator
&
dan|
akan mengecek logika tiap elemen pada vektor secara berpesangan (sesuai urutan dari kiri ke kanan). Operator%%
dan||
hanya mengecek dari kiri ke kanan pada- observasi pertama. Misal saat menggunakan && jika observasi pertama
TRUE
maka observasi pertama pada vektor lainnya akan dicek, namun jika observasi pertamaFALSE
maka proses akan segera dihentikan dan menghasilkan FALSE.
2.5 Memasukkan Nilai Kedalam Variabel
Variabel pada R
dapat digunakan untuk menyimpan nilai. Sebagai contoh jalankan sintaks berikut:
# Harga sebuah lemon adalah 500 rupiah
lemon <- 500
# Atau
500 -> lemon
# dapat juga menggunakan tanda "="
lemon = 500
Penting!!!
R
memungkinkan penggunaan<-
,->
, atau=
sebagai perintah pengisi nilai variabelR
bersifat case-sensitive. Maksudnya adalah variabel Lemon tidak sama dengan lemon (Besar kecil huruf berpengaruh)
Untuk mengetahui nilai dari objek lemon
kita dapat menggunakan fungsi print()
atau mengetikkan nama objeknya secara langsung.
## [1] 500
## [1] 500
R
akan menyimpan variabel lemon
sebagai objek pada memori. Sehingga kita dapat melakukan operasi terhadap objek tersebut seperti mengalikannya atau menjumlahkannya dengan bilangan lain. Sebagai contoh jalankan sintaks berikut:
## [1] 2500
Kita dapat juga mengubah nilai dari objek lemon
dengan cara menginput nilai baru terhadap objek yang sama. R
secara otomatis akan menggatikan nilai sebelumnya. Untuk lebih memahaminya jalankan sintaks berikut:
## [1] 1000
Untuk lebih memahaminya berikut adalah sintaks untuk menghitung volume suatu objek.
# Dimensi objek
panjang <- 10
lebar <- 5
tinggi <- 5
# Menghitung volume
volume <- panjang*lebar*tinggi
# Print objek volume
print(volume)
## [1] 250
Untuk mengetahui objek apa saja yang telah kita buat sepanjang artikel ini kita dapang menggunakan fungsi ls()
.
## [1] "A" "B" "img1_path" "lebar"
## [5] "lemon" "panjang" "t" "tinggi"
## [9] "v" "volume" "x" "xm"
## [13] "y"
Catatan: Kumpulan objek yang telah tersimpan dalam memori disebut sebagai workspace
Untuk menghapus objek pada memori kita dapat menggunakan fungsi rm()
. Pada sintaks berikut penulis hendak menghapus objek lemon
dan volume
.
## [1] "A" "B" "img1_path" "lebar"
## [5] "panjang" "t" "tinggi" "v"
## [9] "x" "xm" "y"
Tips: Setiap variabel atau objek yang dibuat akan menempati sejumlah memori pada komputer sehingga jika kita bekerja dengan jumlah data yang banyak pastikan kita menghapus seluruh objek pada memori sebelum memulai kerja.
2.6 Tipe dan Struktur Data
Data pada R
dapat dikelompokan berdasarkan beberapa tipe. Tipe data pada R
disajikan pada Tabel 2.4.
Tipe Data | Contoh | Keterangan |
---|---|---|
Logical | TRUE, FALSE | Nilai Boolean |
Numeric | 12.3, 5, 999 | Segala jenis angka |
Integer | 23L, 97L, 3L | Bilangan integer (bilangan bulat) |
Complex | 2i, 3i, 9i | Bilangan kompleks |
Character | ‘a’, “b”, “123” | Karakter dan string |
Factor | 1, 0, “Merah” | Dapat berupa numerik atau string (namun pada proses akan terbaca sebagai angka) |
Raw | Identik dengan “hello” | Segala jenis data yang disimpan sebagai raw bytes |
Sintaks berikut adalah contoh dari tipe data pada R
. Untuk mengetahui tipa data suatu objek kita dapat menggunakan perintah class()
## [1] "logical"
## [1] "numeric"
## [1] "integer"
## [1] "complex"
## [1] "character"
## [1] "raw"
Keenam jenis data tersebut disebut sebagai tipe data atomik. Hal ini disebabkan karena hanya dapat menangani satu tipe data saja. Misalnya hanya numeric atau hanya integer.
Selain menggunakan fungsi class()
, kita dapat pula menggunakan fungsi is_numeric()
, is.character()
, is.logical()
, dan sebagainya berdasarkan jenis data apa yang ingin kita cek. Berbeda dengan fungsi class()
, ouput yang dihasilkan pada fungsi seperti is_numeric()
adalah nilai Boolean sehingga fungsi ini hanya digunakan untuk mengecek apakah jenis data pada objek sama seperti yang kita pikirkan. Sebagai contoh disajikan pada sintaks berikut:
## [1] TRUE
## [1] FALSE
Kita juga dapat mengubah jenis data menjadi jenis lainnya seperti integer menjadi numerik atau sebaliknya. Fungsi yang digunakan adalah as.numeric()
jika ingin mengubah suatu jenis data menjadi numerik. Fungsi lainnya juga dapat digunakan sesuai dengan kita ingin mengubah jenis data objek menjadi jenis data lainnya.
## [1] 2
## [1] TRUE
## [1] 1
## Warning: NAs introduced by coercion
## [1] NA
Penting!!!
Konversi karakter menjadi numerik akan menghasilkan output NA (not available).
R
tidak mengetahui bagaimana cara merubah karakter menjadi bentuk numerik.
Berdasarkan Tabel 2, vektor karakter dapat dibuat menggunakan tanda kurung baik double quote ("") maupun single quote (’’).Jika pada teks yang kita tuliskan mengandung quote maka kita harus menghentikannya menggunakan tanda ( ). Sbegai contoh kita ingin menuliskan `My friend’s name is “Adi”, pada sintaks akan dituliskan:
## [1] "My friend`s name is \"Adi\""
## [1] "My friend's name \"Adi\""
Struktur data diklasifikasikan berdasarkan dimensi data dan tie data di dalamnya (homogen atau heterogen). Klasifikasi jenis data disajikan pada Tabel 2.5.
Dimensi | Homogen | Heterogen |
---|---|---|
1d | Atomik vektor | List |
2d | Matriks | Dataframe |
nd | Array |
Berdasarkan Tabel tersebut dapat kita lihat bahwa objek terbagi atas dua buah struktur data yaitu homogen dan heterogen. Objek dengan struktur data homogen hanya dapat menyimpan satu tipe atau jenis data saja (numerik saja atau factor saja), sedangkan objek dengan struktur data heterogen akan dapat menyimpan berbagai jenis data.
2.7 Vektor
Vektor merupakan kombinasi berbagai nilai (numerik, karakter, logical, dan sebagainya berdasarkan jenis input data) pada objek yang sma. Pada contoh kasus berikut, pembaca akan memiliki sesuai jenis data input yaituvektor numerik, vector karakter, vektor logical, dll.
2.7.1 Membuat vektor
Vektor dibuat dengan menggunakan fungsi c()
(concatenate) seperti yang disajikan pada sintaks berikut:
## [1] 3.0 3.5 4.0 7.0
## [1] "Apel" "Jeruk" "Rambutan" "Salak"
## [1] "TRUE" "FALSE" "TRUE"
selain menginput nilai pada vektor, kita juga dapat memberi nama nilai setiap vektor menggunakan fungsi names()
.
# Membuat vektor jumlah buah yang dibeli
Jumlah <- c(5,5,6,7)
names(Jumlah) <- c("Apel", "Jeruk", "Rambutan", "Salak")
# Atau
Jumlah <- c(Apel=5, Jeruk=5, Rambutan=6, Salak=7)
# Print
Jumlah
## Apel Jeruk Rambutan Salak
## 5 5 6 7
Penting!!!
Vektor hanya dapat memuat satu buah jenis data. Vektor hanya dapat mengandung jenis data numerik saja, karakter saja, dll.
Untuk menentukan panjang sebuah vektor kita dapat menggunakan fungsi lenght()
.
## [1] 4
2.7.2 Missing Values
Seringkali nilai pada vektor kita tidak lengkap atau terdapat nilai yang hilang (missing value) pada vektor. Missing value pada R
dilambangkan oleh NA
(not available). Berikut adalah contoh vektor dengan missing value.
Untuk mengecek apakah dalam objek terdapat missing value dapat menggunakan fungsi is.na()
. ouput dari fungsi tersebut adalah nilai Boolean. Jika terdapat Missing value, maka output yang dihasilkan akan memberikan nilai TRUE
.
## Apel Jeruk Rambutan Salak
## FALSE TRUE FALSE FALSE
Penting!!!
- Selain
NA
terdapat NaN (not a number) sebagai missing value8. Nilai tersebut muncul ketika fungsi matematika yang digunakan pada proses perhitungan tidak bekerja sebagaimana mestinya. Contoh:0/0 = NaN
is.na()
juga akan menghasilkan nilaiTRUE
pada NaN. Untuk membedakannya denganNA
dapat digunakan fungsiis.nan()
.
2.7.3 Subset Pada Vektor
Subseting vector terdiri atas tiga jenis, yaitu: positive indexing, Negative Indexing, dan .
- Positive indexing: memilih elemen vektor berdasarkan posisinya (indeks) dalam kurung siku.
## Jeruk
## NA
## Jeruk Salak
## NA 7
Selain melalui urutan (indeks), kita juga dapat melakukan subset (membuat himpunan bagian) berdasarkan nama elemen vektornya.
## Jeruk
## NA
Penting!!!
Indeks pada
R
dimulai dari 1. Sehingga kolom atau elemen pertama vektor dimulai dari [1]
- Negative indexing: mengecualikan (exclude) elemen vektor.
## Apel Rambutan
## 5 6
## Salak
## 7
- Subset berdasarkan vektor logical: Hanya, elemen-elemen yang nilai yang bersesuaian dalam vektor pemilihan bernilai TRUE, akan disimpan dalam subset.
Penting!!!
panjang vektor yang digunakan untuk subset harus sama.
Jumlah <- c(Apel=5, Jeruk=NA, Rambutan=6, Salak=7)
# selecting vector
merah <- c(TRUE, FALSE, TRUE, FALSE)
# Subset
Jumlah[merah==TRUE]
## Apel Rambutan
## 5 6
## Apel Rambutan Salak
## 5 6 7
2.7.4 Operasi Matematis Menggunakan Vektor
Jika pembaca melakukan operasi dengan vektor, operasi akan diterapkan ke setiap elemen vektor. Contoh disediakan pada sintaks di bawah ini:
pendapatan <- c(2000, 1800, 2500, 3000)
names(pendapatan) <- c("Andi", "Joni", "Lina", "Rani")
pendapatan
## Andi Joni Lina Rani
## 2000 1800 2500 3000
## Andi Joni Lina Rani
## 6000 5400 7500 9000
Seperti yang dapat dilihat, R
mengalikan setiap elemen dengan bilangan pengali.
Kita juga dapat mengalikan vektor dengan vektor lainnya.Contohnya disajikan pada sintaks berikut:
# membuat vektor dengan panjang
# sama dengan dengan vektor pendapatan
coefs <- c(2, 1.5, 1, 3)
# Mengalikan pendapatan dengan vektor coefs
pendapatan*coefs
## Andi Joni Lina Rani
## 4000 2700 2500 9000
Berdasarkan sintaks tersebut dapat terlihat bahwa operasi matematik terhadap masing-masing vektor dapat berlangsung jika panjang vektornya sama.
Berikut adalah fungsi lain yang dapat digunakan pada operasi matematika vektor.
max(x) # memperoleh nilai maksimum x
min(x) # memperoleh nilai minimum x
range(x) # memperoleh range vektor x
length(x) # memperoleh jumlah vektor x
sum(x) # memperoleh total penjumlahan vektor x
prod(x) # memeperoleh produk elemen vektor x
mean(x) # memperoleh nilai mean vektor x
sd(x) # standar deviasi vektor x
var(x) # varian vektor x
sort(x) # mengurutkan elemen vektor x dari yang terbesar
Contoh penggunaan fungsi tersebut disajikan beberapa pada sintaks berikut:
## [1] 1800 3000
## [1] 2325
## [1] 537.7
2.7.5 Membuat Deret Angka
Secara sederhana vektor merupakan deret angka. Vektor bisa jadi berupa data yang kita miliki atau sengaja kita buat untuk tujuan simulasi matematika. Urutan angka-angka ini bisa memiliki interval konstan, contoh: titik waktu pada analisis reaksi kimia, atau dapat pula intervalnya bersifat acak seperti pada simulasi Monte Carlo.
2.7.5.1 Regular Sequences
Operator colon (“:”) dapat digunakan untuk membuat sequence vector. Operator tersebut berfungsi sebagai pemisah antara nilai awal dan akhir deret bilangan. Interval nilai sequence yang terbentuk adalah `. Berikut adalah contoh bagaimana cara membuat sequence vector menggunakan operator colon:
## [1] 1 2 3 4 5 6 7 8 9 10
## [1] 10 9 8 7 6 5 4 3 2 1 0 -1
Perlu diperhatikan bahwa dalam aplikasinya operator colon memiliki prioritas tinggi untuk dilakukan komputasi terlebih dahulu dibandingkan operator matematika. Perhatikan sintaks berikut:
## [1] 0 1 2 3 4 5 6 7 8 9
## [1] 1 2 3 4 5 6 7 8 9
Jika kita menginginkan interval antar angka selain 1, kita dapat menggunakan fungsi seq()
. Format sintaks tersebut adalah sebagai berikut:
Catatan:
- from, to: angka awal dan akhir atau nilai maksimum dan minimum deret bilangan yang diinginkan.
- by: interval antar nilai
Misalkan kita akan membuat deret bilangan dari 3 sampai 8 dengan interval antar deret sebesar 0,5. Berikut adalah sintaks yang digunakan:
## [1] 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
2.7.6 Nilai Berulang
Fungsi rep()
dapat digunakan untuk membuat deret dengan nilai berulang. Format fungsi tersebut adalah sebagai berikut:
Catatan:
- x: nilai yang hendak dibuat berulang.
- times: jumlah pengulangan.
- each: argumen tambahan yang menentukan jumlah masing-masing elemen vektor akan dicetak.
## [1] 5 5 5 5 5
## [1] 5 6 5 6 5 6
## [1] 5 5 5 6 6 6
2.7.7 Deret Bilangan Acak
Deret bilangan acak biasanya banyak digunakan dalam sebuah simulasi. R
menyediakan fungsi untuk memproduksi bilangan-bilangan acak tersebut berdasarkan distribusi tertentu. Berikut adalah tabel rangkuman nama distribusi, fungsi, dan argumen yang digunakan:
Distribusi | Fungsi | Argumen |
---|---|---|
Beta | rbeta(n, shape1, shape2, ncp = 0) |
n = jumlah observasi; shape1,shape2 = parameter non-negatif distribusi beta; ncp = non-centrality parameter |
Binomial | rbinom(n, size, prob) |
n = jumlah observasi; prob = probabilitas sukses; size = jumlah percobaan |
Cauchy | rcauchy(n, location = 0, scale = 1) |
n = jumlah observasi; location, scale = parameter lokasi dan skala distribusi Cauchy |
Chi-Square | rchisq(n, df, ncp = 0) |
n = jumlah observasi; df = derajat kebebasan; ncp = non-centrality parameter |
Exponensial | rexp(n, rate = 1) |
n = jumlah observasi; rate = vektor parameter rate |
F | rf(n, df1, df2, ncp) |
n = jumlah observasi; df1, df2 = derajat kebebasan; ncp = non-centrality parameter |
Gamma | rgamma(n, shape, rate = 1, scale = 1/rate) |
n = jumlah observasi; shape, scale = parameter shape dan scale; rate = alternatif lain argumen rate |
Geometri | rgeom(n, prob) |
n = jumlah observasi; prob = probabilitas sukses |
Hipergeometri | rhyper(nn, m, n, k) |
nn = jumlah observasi; m = jumlah bola putih dalam wadah; n = jumlah bola hitam dalam wadah; k = jumlah pengambilan |
Log-normal | rlnorm(n, meanlog = 0, sdlog = 1) |
n = jumlah observasi; meanlog, sdlog = nilai mean dan simpangan baku dalam skala logaritmik |
Negatif Binomial | rnbinom(n, size, prob, mu) |
n = jumlah observasi; size = target jumlah percobaan sukses pertama kali; prob = probabilitas sukses; mu = parameterisasi alternatif melalui mean |
Normal | rnorm(n, mean = 0, sd = 1) |
n = jumlah observasi; mead, sd = nilai mean dan simpangan baku |
Poisson | rpois(n, lambda) |
n = jumlah observasi; lambda = vektor nilai mean |
Student t | rt(n, df, ncp) |
n = jumlah observasi; df = derajat kebebasan; ncp = non-centrality parameter |
Uniform | runif(n, min = 0, max = 1) |
n = jumlah observasi; min, max = nilai maksimum dan minimum distribusi |
Weibull | rweibull(n, shape, scale = 1) |
n = jumlah observasi; shape, scale = parameter shape dan scale |
Berikut adalah contoh pembuatan vektor menggunakan bilangan acak berdistribusi normal:
x <- 1:6
error <- rnorm(n=1, mean=0, sd=1)
# cetak x + error dengan 3 nilai signifikan
round((x+error), 3)
## [1] 0.317 1.317 2.317 3.317 4.317 5.317
2.8 Matriks
Matriks 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.
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, 6, 7, 8, 9)
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,] 6 4 3
## [3,] 7 5 4
## [4,] 8 9 8
## [5,] 9 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 6 4 3
## row3 7 5 4
## row4 8 9 8
## row5 9 8 7
Catatan:
cbind()
: menggabungkan objekR
berdasarkan kolomrbind()
: menggabungkan objekR
berdasarkan barisrownames()
: mengambil atau menetapkan nama-nama baris dari objek seperti-matrikscolnames()
: 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:
## row1 row2 row3 row4 row5
## col1 5 6 7 8 9
## 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:
Catatan:
data
: vektor data opsionalnrow
, ncol: jumlah baris dan kolom yang diinginkan, masing-masing.byrow
: nilai logis. Jika FALSE (default) matriks diisi oleh kolom, jika tidak, matriks diisi oleh baris.dimnames
: Daftar dua vektor yang memberikan nama baris dan 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, 11,12,13),
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 11 12 13
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:
## [1] 3
## [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:
## [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:
## col1 col2 col3
## 6 4 3
## col1 col2 col3
## row2 6 4 3
## row3 7 5 4
## row4 8 9 8
## col1 col2 col3
## row2 6 4 3
## row4 8 9 8
## [1] 3
- Pilih berdasarkan nama baris/kolom
Berikut adalah contoh subset berdasarkan nama baris atau kolom.
## [1] 7
## 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:
## col1 col2
## row1 5 2
## row4 8 9
## row5 9 8
- Pilihan dengan logik
Dalam kode R
di bawah ini, misalkan kita ingin hanya menyimpan baris di mana col3> = 4:
## col1 col2 col3
## row1 5 2 7
## row3 7 5 4
## row4 8 9 8
## row5 9 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:
## col1 col2 col3
## row1 10 4 14
## row2 12 8 6
## row3 14 10 8
## row4 16 18 16
## row5 18 16 14
## col1 col2 col3
## row1 2.322 1.000 2.807
## row2 2.585 2.000 1.585
## row3 2.807 2.322 2.000
## row4 3.000 3.170 3.000
## row5 3.170 3.000 2.807
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()
untuk baris dan colSums()
untuk kolom.
## col1 col2 col3
## 35 28 29
## row1 row2 row3 row4 row5
## 14 13 16 25 24
Jika kita tertarik untuk mencari nilai rata-rata tiap baris arau kolom kita juga dapat menggunakan fungsi rowMeans()
atau colMeans()
. Berikut adalah contoh penerapannya:
## row1 row2 row3 row4 row5
## 4.667 4.333 5.333 8.333 8.000
## col1 col2 col3
## 7.0 5.6 5.8
Kita juga dapat melakukan perhitungan statistika lainnya menggunakan fungsi apply()
. Berikut adalah format sederhananya:
Catatan:
x
: data matriksMARGIN
: Nilai yang dapat digunakan adalah1
(untuk operasi pada baris) dan2
(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:
Berikut adalah contoh penerapannya:
## row1 row2 row3 row4 row5
## 4.667 4.333 5.333 8.333 8.000
## col1 col2 col3
## 7 5 7
Perhitungan lainnya tidak akan dibahas pada chapter ini. Operasi matriks lebih lengkap selanjutnya akan dibahas pada chapter selanjutnya.
2.9 Referensi
- Bloomfield, V.A. 2014. Using R for Numerical Analysis in Science and Engineering. CRC Press
- Primartha, R. 2018. Belajar Machine Learning Teori dan Praktik. Penerbit Informatika : Bandung.
- Rosadi,D. 2016. Analisis Statistika dengan R. Gadjah Mada University Press: Yogyakarta.
- STHDA. Easy R Programming Basics. http://www.sthda.com/english/wiki/easy-r-programming-basics
- The R Core Team. 2018. R: A Language and Environment for Statistical Computing. R Manuals.
- Venables, W.N. Smith D.M. and R Core Team. 2018. An Introduction to R. R Manuals.