BAB 2 — Simple Manipulations; Numbers and Vectors

2.1 Vectors and Assignment

Penjelasan: Vector adalah struktur data sederhana di R yang berisi sekumpulan nilai dalam urutan tertentu. Fungsi c() digunakan untuk menggabungkan beberapa nilai menjadi satu vector, sedangkan operator <- digunakan untuk menyimpan nilai ke dalam suatu objek.

x <- c(80, 75, 90, 85)
x
## [1] 80 75 90 85

c() digunakan untuk menggabungkan beberapa nilai menjadi satu vector. <- artinya “Masukkan nilai di sebelah kanan ke nama yang ada di sebelah kiri.”

2.2 Vector Arithmetic

Penjelasan: Operasi matematika pada vector dilakukan secara elemen per elemen. Operator seperti +, -, *, /, dan ^ dapat langsung digunakan pada vector. Jika panjang vector berbeda, R dapat mengulang vector yang lebih pendek melalui recycling rule.

x <- c(1, 2, 3)

x + 10
## [1] 11 12 13
x <- c(70, 80, 90)

mean(x)
## [1] 80
x <- c(10,20,30,40)
y <- c(1,2)

x + y
## [1] 11 22 31 42

Kesimpulan: R dapat melakukan perhitungan langsung pada seluruh elemen vector tanpa harus menghitung satu per satu.

2.3 Generating Regular Sequences

Penjelasan: Urutan angka dapat dibuat menggunakan operator : atau fungsi seq(). Fungsi rep() digunakan untuk mengulang nilai atau elemen tertentu. Pada contoh 1:n-1 dan 1:(n-1), hasilnya berbeda karena penggunaan tanda kurung memengaruhi urutan operasi.

1:5
## [1] 1 2 3 4 5
5:1
## [1] 5 4 3 2 1
seq(0, 10, by=2)
## [1]  0  2  4  6  8 10
seq(0, 10, by=2)
## [1]  0  2  4  6  8 10
rep(c(1,2), times=3)
## [1] 1 2 1 2 1 2
rep(c(1,2), each=3)
## [1] 1 1 1 2 2 2

Kesimpulan: Operator :, seq(), dan rep() mempermudah pembuatan pola atau urutan angka, sedangkan tanda kurung penting untuk menentukan urutan perhitungan.

2.4 Logical Vectors

Penjelasan: Logical vector berisi nilai TRUE, FALSE, atau NA. Nilai logical biasanya dihasilkan dari operasi perbandingan seperti >, <, >=, <=, ==, dan !=. Operator &, |, dan ! digunakan untuk operasi logika AND, OR, dan NOT.

x <- c(60, 80, 90)

x > 75
## [1] FALSE  TRUE  TRUE
x >= 70 & x <= 85
## [1] FALSE  TRUE FALSE

Kesimpulan: Logical vector digunakan untuk mengevaluasi kondisi dan sangat berguna dalam proses penyaringan data.

2.5 Missing Values

Penjelasan: Nilai yang tidak tersedia dalam R ditandai dengan NA. Untuk memeriksa apakah suatu nilai merupakan missing value digunakan fungsi is.na(). Nilai NaN digunakan untuk hasil perhitungan yang tidak terdefinisi, seperti 0/0.

x <- c(80, 90, NA, 75)
is.na(x)
## [1] FALSE FALSE  TRUE FALSE

Kesimpulan: NA menunjukkan data yang hilang atau tidak tersedia, sedangkan is.na() digunakan untuk mendeteksinya.

2.6 Character Vectors

Penjelasan: Character vector digunakan untuk menyimpan data berupa teks. Teks ditulis menggunakan tanda kutip, dan fungsi paste() dapat digunakan untuk menggabungkan beberapa teks atau nilai menjadi satu string.

nama <- c("Andi", "Budi", "Citra")
nama
## [1] "Andi"  "Budi"  "Citra"
paste("budi", "mewing")
## [1] "budi mewing"
paste("budi", "tzy", sep="")
## [1] "buditzy"

Kesimpulan: Character vector digunakan untuk data teks, sedangkan paste() berguna untuk menggabungkan beberapa teks menjadi satu.

2.7 Index Vectors

Penjelasan: Index digunakan untuk memilih atau memodifikasi bagian tertentu dari vector. Index dapat berupa logical, bilangan positif, bilangan negatif, atau nama elemen. Misalnya x[1:3] mengambil tiga elemen pertama, sedangkan x[-1] mengambil semua elemen kecuali elemen pertama.

x <- c(10,20,30,40,50)
x[1]
## [1] 10
x[3]
## [1] 30
x[c(1,4)]
## [1] 10 40
x[1:3]
## [1] 10 20 30
x[-1]
## [1] 20 30 40 50
x[x > 25]
## [1] 30 40 50
x[x > 25] <- 0
x[is.na(x)] <- 0

Kesimpulan: Indexing digunakan untuk mengambil, menyaring, atau mengubah elemen tertentu dalam sebuah vector.

2.8 Other Types of Objects

Penjelasan: Selain vector, R memiliki berbagai jenis objek lain seperti matrix, array, factor, list, data frame, dan function. Setiap objek memiliki fungsi dan struktur yang berbeda sesuai kebutuhan pengolahan data.

Vector Factor Matrix Array List Data Frame Function

Kesimpulan: R menyediakan berbagai jenis objek agar data dapat disimpan dan diolah sesuai bentuk dan kebutuhannya.

BAB 3 — Objects, Their Modes and Attributes

3.1 Mode dan Length

Penjelasan: Setiap objek di R memiliki mode dan length. mode() digunakan untuk mengetahui tipe dasar data, sedangkan length() digunakan untuk mengetahui jumlah elemen dalam suatu objek.

x <- c(1,2,3)

mode(x)
## [1] "numeric"
length(x)
## [1] 3
x <- 1:5
as.character(x)
## [1] "1" "2" "3" "4" "5"
as.integer(x)
## [1] 1 2 3 4 5

Kesimpulan: mode() menunjukkan jenis data, sedangkan length() menunjukkan jumlah elemen pada suatu objek.

3.2 Changing Length

Penjelasan: Panjang sebuah vector dapat berubah ketika elemen baru ditambahkan pada posisi yang sebelumnya belum ada. Jika ada posisi yang terlewati, R akan mengisinya dengan NA. Panjang vector juga dapat dipendekkan dengan mengatur nilai length().

x <- c(1,2)

x[4] <- 10

Kenapa ada NA? Karena posisi ke-3 belum pernah diberikan nilai.

Kesimpulan: Panjang objek di R dapat diperpanjang atau dipersingkat sesuai kebutuhan, dan posisi kosong akan diisi dengan NA.

3.3 Attributes

Penjelasan: Attribute adalah informasi tambahan yang dimiliki sebuah objek. Fungsi attributes() digunakan untuk melihat seluruh attribute, sedangkan attr() dapat digunakan untuk melihat atau mengubah attribute tertentu. Contohnya, attribute dim dapat membuat vector diperlakukan sebagai matriks.

x <- c(1,2,3,4)
x <- 1:4

dim(x) <- c(2,2)
x
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4

Kesimpulan: Attribute memberikan informasi tambahan pada objek dan dapat mengubah bagaimana R memperlakukan objek tersebut.

3.4 Class

Penjelasan: Fungsi class() digunakan untuk mengetahui jenis atau kelas suatu objek, misalnya “numeric”, “matrix”, “factor”, atau “data.frame”. Class memengaruhi bagaimana beberapa fungsi seperti plot() dan summary() bekerja pada objek tersebut.

class(x)
## [1] "matrix" "array"

Kesimpulan: Class menunjukkan identitas suatu objek dan menentukan bagaimana R akan memperlakukan objek tersebut dalam berbagai fungsi.

BAB 4 — Ordered and Unordered Factors

4.1 Specific Example

Penjelasan: Pada contoh di PDF, data asal state disimpan sebagai character vector lalu diubah menjadi factor menggunakan factor(). Setiap kategori unik kemudian menjadi level yang dapat dilihat menggunakan levels().

gender <- c("L", "P", "P", "L", "P")
levels(gender)
## NULL
gender <- factor(gender)
factor(gender)
## [1] L P P L P
## Levels: L P

Kesimpulan: Factor digunakan untuk mengubah data kategori menjadi struktur yang lebih sesuai untuk pengelompokan dan analisis statistik.

4.2 tapply()

Penjelasan: Fungsi tapply() digunakan untuk menerapkan suatu fungsi pada kelompok data tertentu. Pada contoh PDF, income dikelompokkan berdasarkan state, kemudian rata-ratanya dihitung dengan tapply(incomes, statef, mean). Fungsi ini juga dapat digunakan untuk menghitung ukuran lain seperti standard error atau jumlah data tiap kelompok.

nilai <- c(80, 90, 70, 60, 85, 75)

kelas <- factor(c("A", "A", "B", "B", "A", "B"))

tapply(nilai, kelas, mean)
##        A        B 
## 85.00000 68.33333

Kesimpulan: tapply() berguna untuk menghitung suatu nilai statistik berdasarkan kelompok, seperti mean, jumlah data, atau ukuran statistik lainnya.

4.3 Ordered Factors

Penjelasan: Kode ordered() digunakan untuk membuat data kategori yang memiliki urutan tertentu. Pada contoh ini, kategori diurutkan dari Rendah → Sedang → Tinggi, sehingga R mengenali bahwa ketiga kategori tersebut memiliki tingkatan.

tingkat <- c("Rendah", "Tinggi", "Sedang", "Rendah", "Tinggi")

tingkat_ordered <- ordered(
  tingkat,
  levels = c("Rendah", "Sedang", "Tinggi")
)

tingkat_ordered
## [1] Rendah Tinggi Sedang Rendah Tinggi
## Levels: Rendah < Sedang < Tinggi
levels(tingkat_ordered)
## [1] "Rendah" "Sedang" "Tinggi"

Kesimpulan: Ordered factor digunakan ketika data kategorik memiliki urutan alami, seperti rendah, sedang, dan tinggi.

BAB 5 - Arrays and matrices

5.1 Arrays

Penjelasan: Kode membuat sebuah vektor berisi angka 1 sampai 24, kemudian fungsi dim() mengubahnya menjadi array berdimensi 3 × 4 × 2. Dengan demikian, data yang awalnya satu dimensi dapat disusun menjadi beberapa dimensi.

z <- 1:24

dim(z) <- c(3, 4, 2)

z
## , , 1
## 
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
## 
## , , 2
## 
##      [,1] [,2] [,3] [,4]
## [1,]   13   16   19   22
## [2,]   14   17   20   23
## [3,]   15   18   21   24

Kesimpulan: Array digunakan untuk menyimpan data dalam lebih dari satu dimensi, sedangkan matriks merupakan array dengan dua dimensi.

5.2 Array Indexing

Penjelasan: Indexing digunakan untuk mengambil bagian tertentu dari sebuah array. Misalnya A[2,3,1] mengambil data pada posisi baris ke-2, kolom ke-3, dan lapisan ke-1. Jika salah satu indeks dikosongkan, maka seluruh data pada dimensi tersebut akan diambil.

A <- array(1:24, dim = c(3, 4, 2))

A
## , , 1
## 
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
## 
## , , 2
## 
##      [,1] [,2] [,3] [,4]
## [1,]   13   16   19   22
## [2,]   14   17   20   23
## [3,]   15   18   21   24
A[2, 3, 1]
## [1] 8
A[2, , ]
##      [,1] [,2]
## [1,]    2   14
## [2,]    5   17
## [3,]    8   20
## [4,]   11   23
A[, 3, 1]
## [1] 7 8 9
A[, , 1]
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12

Kesimpulan: Array indexing memudahkan kita mengambil data tertentu berdasarkan posisi baris, kolom, maupun dimensi lainnya.

5.3 Index Matrices

Penjelasan: Index matrix digunakan untuk menentukan beberapa posisi data yang ingin diambil atau diubah sekaligus. Pada contoh, matriks i berisi koordinat tertentu dari matriks x, kemudian x[i] mengambil nilai pada koordinat tersebut. Nilai tersebut juga dapat diganti, misalnya dengan x[i] <- 0.

x <- array(1:20, dim = c(4, 5))

x
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    5    9   13   17
## [2,]    2    6   10   14   18
## [3,]    3    7   11   15   19
## [4,]    4    8   12   16   20
i <- array(
  c(1:3, 3:1),
  dim = c(3, 2)
)

i
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    2
## [3,]    3    1
x[i]
## [1] 9 6 3
x[i] <- 0

x
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    5    0   13   17
## [2,]    2    0   10   14   18
## [3,]    0    7   11   15   19
## [4,]    4    8   12   16   20

Kesimpulan: Index matrix berguna untuk mengakses atau memodifikasi beberapa elemen matriks berdasarkan koordinat tertentu secara bersamaan.

5.4 array()

Penjelasan: Fungsi array() digunakan untuk membuat array secara langsung dengan menentukan data dan ukurannya. Pada contoh, data 1 sampai 24 disusun menjadi array dengan dimensi 3 × 4 × 2.

Z <- array(
  1:24,
  dim = c(3, 4, 2)
)

Z
## , , 1
## 
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
## 
## , , 2
## 
##      [,1] [,2] [,3] [,4]
## [1,]   13   16   19   22
## [2,]   14   17   20   23
## [3,]   15   18   21   24

array berisi 0

Z0 <- array(
  0,
  dim = c(3, 4, 2)
)

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

Kesimpulan: Fungsi array() merupakan cara sederhana untuk mengubah sekumpulan data menjadi struktur multidimensi.

5.4.1 Recycling Rule pada Array

Penjelasan: Recycling rule terjadi ketika jumlah data lebih sedikit daripada jumlah elemen yang dibutuhkan. R akan mengulang data dari awal sampai ukuran yang dibutuhkan terpenuhi. Misalnya nilai 1, 2 akan terus diulang jika digunakan untuk mengisi array yang membutuhkan enam elemen.

A <- array(
  c(1, 2),
  dim = c(2, 3)
)

A
##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    2    2    2
A + 10
##      [,1] [,2] [,3]
## [1,]   11   11   11
## [2,]   12   12   12

Kesimpulan: Recycling memungkinkan R mengulang data yang lebih pendek agar sesuai dengan ukuran data atau array yang lebih panjang.

5.5 Outer Product

Penjelasan: Operator %o% atau fungsi outer() digunakan untuk melakukan operasi antara setiap elemen pada vektor pertama dengan setiap elemen pada vektor kedua. Pada contoh perkalian, setiap nilai pada a dikalikan dengan seluruh nilai pada b.

a <- c(1, 2, 3)
b <- c(10, 20)

a %o% b
##      [,1] [,2]
## [1,]   10   20
## [2,]   20   40
## [3,]   30   60

Kesimpulan: Outer product digunakan untuk menghasilkan seluruh kombinasi operasi antara dua vektor atau array.

5.6 Generalized Transpose

Penjelasan: Fungsi t() digunakan untuk melakukan transpose matriks, yaitu menukar posisi baris menjadi kolom dan kolom menjadi baris. Untuk array dengan lebih dari dua dimensi, fungsi aperm() dapat digunakan untuk menukar susunan dimensinya.

A <- matrix(
  1:6,
  nrow = 2,
  byrow = TRUE
)

A
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
t(A)
##      [,1] [,2]
## [1,]    1    4
## [2,]    2    5
## [3,]    3    6

untuk aperm()

B <- array(1:24, dim = c(3, 4, 2))

B2 <- aperm(B, c(2, 1, 3))

dim(B2)
## [1] 4 3 2

Kesimpulan: Transpose digunakan untuk menukar struktur baris dan kolom pada matriks, sedangkan aperm() dapat digunakan pada array multidimensi.

5.7 Matrix Facilities

Penjelasan: Fungsi nrow() digunakan untuk mengetahui jumlah baris sebuah matriks, sedangkan ncol() digunakan untuk mengetahui jumlah kolomnya. Fungsi-fungsi ini membantu mengetahui ukuran atau struktur sebuah matriks.

A <- matrix(
  1:12,
  nrow = 3,
  ncol = 4
)

A
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
ncol(A)
## [1] 4
nrow(A)
## [1] 3

Kesimpulan: nrow() dan ncol() digunakan untuk mengetahui dimensi dasar sebuah matriks.

5.7.1 Matrix Multiplication

Penjelasan: Operator * melakukan perkalian pada elemen yang posisinya sama, sedangkan %*% melakukan perkalian matriks sesuai aturan aljabar matriks. Oleh karena itu, kedua operator tersebut dapat menghasilkan hasil yang berbeda.

A <- matrix(
  c(1, 2,
    3, 4),
  nrow = 2,
  byrow = TRUE
)

B <- matrix(
  c(5, 6,
    7, 8),
  nrow = 2,
  byrow = TRUE
)

A * B
##      [,1] [,2]
## [1,]    5   12
## [2,]   21   32
A %*% B
##      [,1] [,2]
## [1,]   19   22
## [2,]   43   50
crossprod(A, B)
##      [,1] [,2]
## [1,]   26   30
## [2,]   38   44
diag(c(1, 2, 3))
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    2    0
## [3,]    0    0    3
diag(3)
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    1    0
## [3,]    0    0    1

Kesimpulan: Gunakan * untuk perkalian per elemen dan %*% untuk perkalian matriks.

5.7.2 Linear Equations and Inversion

Penjelasan: Fungsi solve(A, b) digunakan untuk mencari nilai x pada sistem persamaan matriks (Ax=b). Sementara itu, solve(A) digunakan untuk mencari invers dari matriks A.

A <- matrix(
  c(2, 1,
    1, 3),
  nrow = 2,
  byrow = TRUE
)

b <- c(5, 7)

# cari x
x <- solve(A, b)

x
## [1] 1.6 1.8
solve(A)
##      [,1] [,2]
## [1,]  0.6 -0.2
## [2,] -0.2  0.4
A %*% x
##      [,1]
## [1,]    5
## [2,]    7

Kesimpulan: Fungsi solve() dapat digunakan untuk menyelesaikan sistem persamaan linear maupun mencari invers suatu matriks.

5.7.3 Eigenvalues dan Eigenvectors

Penjelasan: Fungsi eigen() digunakan untuk menghitung eigenvalue dan eigenvector suatu matriks. Hasilnya terdiri dari values yang berisi eigenvalue dan vectors yang berisi eigenvector.

A <- matrix(
  c(2, 1,
    1, 2),
  nrow = 2,
  byrow = TRUE
)

A
##      [,1] [,2]
## [1,]    2    1
## [2,]    1    2
# hitung
ev <- eigen(A)

ev
## eigen() decomposition
## $values
## [1] 3 1
## 
## $vectors
##           [,1]       [,2]
## [1,] 0.7071068 -0.7071068
## [2,] 0.7071068  0.7071068
# Ambil eigenvalues:

ev$values
## [1] 3 1
# Ambil eigenvectors:

ev$vectors
##           [,1]       [,2]
## [1,] 0.7071068 -0.7071068
## [2,] 0.7071068  0.7071068
# Kalau hanya membutuhkan eigenvalue:

eigen(A, only.values = TRUE)$values
## [1] 3 1

Kesimpulan: Fungsi eigen() memudahkan perhitungan eigenvalue dan eigenvector dari sebuah matriks.

5.7.4 SVD dan Determinant

Penjelasan: Fungsi svd() digunakan untuk melakukan Singular Value Decomposition (SVD), yaitu memecah matriks menjadi beberapa komponen yang lebih sederhana. Fungsi det() digunakan untuk menghitung nilai determinan matriks. Selain itu, fungsi tr() dapat dibuat dengan sum(diag(M)) untuk menghitung jumlah elemen diagonal utama atau trace matriks.

M <- matrix(
  c(1, 2,
    3, 4),
  nrow = 2,
  byrow = TRUE
)

# SVD
hasil_svd <- svd(M)

hasil_svd
## $d
## [1] 5.4649857 0.3659662
## 
## $u
##            [,1]       [,2]
## [1,] -0.4045536 -0.9145143
## [2,] -0.9145143  0.4045536
## 
## $v
##            [,1]       [,2]
## [1,] -0.5760484  0.8174156
## [2,] -0.8174156 -0.5760484
hasil_svd$d
## [1] 5.4649857 0.3659662
hasil_svd$u
##            [,1]       [,2]
## [1,] -0.4045536 -0.9145143
## [2,] -0.9145143  0.4045536
hasil_svd$v
##            [,1]       [,2]
## [1,] -0.5760484  0.8174156
## [2,] -0.8174156 -0.5760484
# determinant
det(M)
## [1] -2

Kesimpulan: svd() digunakan untuk dekomposisi matriks, det() untuk menghitung determinan, dan sum(diag()) dapat digunakan untuk menghitung trace matriks.

5.7.5 Least Squares dan QR Decomposition

Penjelasan: Fungsi lsfit() digunakan untuk mencari model yang paling sesuai dengan data menggunakan metode least squares. Sementara itu, qr() melakukan QR decomposition yang dapat digunakan dalam berbagai perhitungan matriks dan regresi. PDF juga menjelaskan bahwa untuk pemodelan regresi, fungsi lm() umumnya lebih sering digunakan.

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

y <- c(2, 4, 5, 8, 10)

X <- cbind(x)

# Least squares:

hasil <- lsfit(X, y)

hasil
## $coefficients
## Intercept         x 
##      -0.2       2.0 
## 
## $residuals
## [1]  0.2  0.2 -0.8  0.2  0.2
## 
## $intercept
## [1] TRUE
## 
## $qr
## $qt
## [1] -12.9691943   6.3245553  -0.8377051   0.2012867   0.2402786
## 
## $qr
##       Intercept          x
## [1,] -2.2360680 -6.7082039
## [2,]  0.4472136  3.1622777
## [3,]  0.4472136 -0.1954395
## [4,]  0.4472136 -0.5116673
## [5,]  0.4472136 -0.8278950
## 
## $qraux
## [1] 1.447214 1.120788
## 
## $rank
## [1] 2
## 
## $pivot
## [1] 1 2
## 
## $tol
## [1] 1e-07
## 
## attr(,"class")
## [1] "qr"
# QR decomposition:

hasil_qr <- qr(X)

hasil_qr
## $qr
##               x
## [1,] -7.4161985
## [2,]  0.2696799
## [3,]  0.4045199
## [4,]  0.5393599
## [5,]  0.6741999
## 
## $rank
## [1] 1
## 
## $qraux
## [1] 1.13484
## 
## $pivot
## [1] 1
## 
## attr(,"class")
## [1] "qr"

Kesimpulan: Least squares digunakan untuk mencari model yang paling sesuai dengan data, sedangkan QR decomposition merupakan salah satu metode perhitungan matriks yang mendukung proses tersebut.

5.8 cbind() dan rbind()

Penjelasan: Fungsi cbind() digunakan untuk menggabungkan beberapa vektor atau matriks berdasarkan kolom, sedangkan rbind() digunakan untuk menggabungkannya berdasarkan baris.

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

cbind(x, y)
##      x y
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6
rbind(x, y)
##   [,1] [,2] [,3]
## x    1    2    3
## y    4    5    6

Kesimpulan: cbind() digunakan untuk menggabungkan data secara horizontal, sedangkan rbind() digunakan untuk menggabungkan data secara vertikal.

5.9 Fungsi c() dengan Array

Penjelasan: Ketika fungsi c() digunakan pada sebuah matriks atau array, struktur dimensinya dapat dihilangkan sehingga data berubah menjadi sebuah vektor. Fungsi as.vector() juga dapat digunakan untuk tujuan yang sama dan merupakan cara yang lebih langsung.

A <- matrix(
  1:6,
  nrow = 2
)

A
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
# Ubah menjadi vector:
vec2 <- as.vector(A)

vec2
## [1] 1 2 3 4 5 6
class(A)
## [1] "matrix" "array"
class(vec2)
## [1] "integer"

Kesimpulan: Fungsi c() atau as.vector() dapat digunakan untuk mengubah matriks atau array menjadi vektor biasa.

5.10 Frequency Tables from Factors

Penjelasan: Fungsi table() digunakan untuk menghitung jumlah atau frekuensi setiap kategori dalam sebuah factor. Jika digunakan pada dua factor, table() akan menghasilkan tabel silang yang menunjukkan frekuensi kombinasi dari kedua kategori tersebut.

gender <- factor(
  c("L", "P", "P", "L", "P", "L", "P")
)

table(gender)
## gender
## L P 
## 3 4

Contoh dua Faktor

gender <- factor(
  c("L", "P", "P", "L", "P", "L")
)

kelas <- factor(
  c("A", "A", "B", "B", "A", "B")
)

table(gender, kelas)
##       kelas
## gender A B
##      L 1 2
##      P 2 1

Kesimpulan: Fungsi table() berguna untuk membuat tabel frekuensi satu kategori maupun tabel silang antara beberapa kategori.