###Bab 2: Simple Manipulations; Numbers and Vectors

#2.1 Vectors and Assignment (Vektor dan Penugasan) Vektor numerik adalah struktur data paling mendasar dalam R. Membuat Vektor: Menggunakan fungsi c() untuk menggabungkan elemen-elemen.

x <- c(10.4, 5.6, 3.1, 6.4, 21.7)

nilai ke variabel dapat menggunakan <-, =, fungsi assign(), atau arah sebaliknya

#2.2 Vector Arithmetic Operasi aritmatika pada vektor dilakukan elemen demi elemen (element-by-element). Aturan Daur Ulang (Recycling Rule): Jika dua vektor memiliki panjang yang berbeda dalam satu operasi, vektor yang lebih pendek akan diulang hingga panjangnya menyamai vektor terpanjang.

Fungsi Matematika & Statistik:Operasi dasar: +, -, *, /, ^. Statistik umum: sum(x), prod(x), mean(x), var(x), min(x), max(x), range(x), dan length(x). Pengurutan: sort(x) mengurutkan elemen vektor secara naik.

#2.3 Generating Regular Sequences R menyediakan beberapa cara untuk menghasilkan urutan angka:

Operator Titik Dua (:): Menghasilkan deret integer bertahap 1.

seq(-5, 5, by = 0.2)
##  [1] -5.0 -4.8 -4.6 -4.4 -4.2 -4.0 -3.8 -3.6 -3.4 -3.2 -3.0 -2.8 -2.6 -2.4 -2.2
## [16] -2.0 -1.8 -1.6 -1.4 -1.2 -1.0 -0.8 -0.6 -0.4 -0.2  0.0  0.2  0.4  0.6  0.8
## [31]  1.0  1.2  1.4  1.6  1.8  2.0  2.2  2.4  2.6  2.8  3.0  3.2  3.4  3.6  3.8
## [46]  4.0  4.2  4.4  4.6  4.8  5.0
seq(length = 51, from = -5, by = 0.2)
##  [1] -5.0 -4.8 -4.6 -4.4 -4.2 -4.0 -3.8 -3.6 -3.4 -3.2 -3.0 -2.8 -2.6 -2.4 -2.2
## [16] -2.0 -1.8 -1.6 -1.4 -1.2 -1.0 -0.8 -0.6 -0.4 -0.2  0.0  0.2  0.4  0.6  0.8
## [31]  1.0  1.2  1.4  1.6  1.8  2.0  2.2  2.4  2.6  2.8  3.0  3.2  3.4  3.6  3.8
## [46]  4.0  4.2  4.4  4.6  4.8  5.0

Fungsi rep(): Pengulangan elemen atau vektor.

#2.4 Logical Vectors Vektor logika berisi nilai TRUE, FALSE, atau NA (Not Available). Operator Relasional: <, <=, >, >=, ==, !=. Operator Logika: & (AND), | (OR), ! (NOT).
Jika digunakan dalam operasi aritmatika, FALSE dikonversi menjadi 0 dan TRUE menjadi 1.

#2.5 Missing Values NA: Digunakan untuk elemen yang nilainya tidak tersedia. Fungsi is.na(x) digunakan untuk memeriksa apakah terdapat nilai NA. NaN (Not a Number): Hasil dari perhitungan numerik yang tidak terdefinisi (seperti 0/0 atau Inf - Inf). Fungsi is.nan(x) khusus memeriksa nilai NaN.

#2.6 Character Vectors Fungsi paste(): Menggabungkan argumen-argumen menjadi string karakter.

labs <- paste(c("X", "Y"), 1:10, sep = "")
labs
##  [1] "X1"  "Y2"  "X3"  "Y4"  "X5"  "Y6"  "X7"  "Y8"  "X9"  "Y10"

#2.7 Index Vectors Mengambil atau mengubah sebagian elemen vektor menggunakan tanda kurung siku x[…] ##Vektor Logika: Elemen yang bersesuaian dengan TRUE akan dipilih.

y <- x[!is.na(x)]

##Vektor Bilangan Bulat Positif: Memilih elemen pada posisi indeks tersebut.

x[1:10]
##  [1] 10.4  5.6  3.1  6.4 21.7   NA   NA   NA   NA   NA

##Vektor Bilangan Bulat Negatif: Menghapus/mengecualikan elemen pada posisi tersebut.

y <- x[-(1:5)]

##Vektor String Karakter: Digunakan jika elemen vektor memiliki atribut nama (names).

fruit <- c(5, 10, 1, 20)
names(fruit) <- c("orange", "banana", "apple", "peach")
lunch <- fruit[c("apple", "orange")]
lunch
##  apple orange 
##      1      5

#2.8 Other Types of Objects (Tipe Objek Lainnya) Matrices / Arrays: Generalisasi vektor multi-dimensi.
Factors: Pengelompokan data kategorikal.
Lists: Kumpulan elemen yang bisa memiliki tipe/mode berbeda.
Data Frames: Struktur mirip matriks di mana tiap kolom bisa memiliki tipe data yang berbeda. Functions: Objek yang menyimpan fungsi buatan pengguna.

###Bab 3: Objects, Their Modes and Attributes

#3.1 Intrinsic Attributes: Mode and Length Setiap objek di R memiliki dua atribut intrinsik utama: mode (tipe dasar data) dan length (panjang atau jumlah elemen).
1.Struktur Atomik (Atomic Structures): Semua komponen di dalam objek harus memiliki tipe/mode yang sama.

2.Struktur Rekursif (Recursive Structures):Objek yang elemen-elemennya bisa terdiri dari mode yang berbeda-beda. Contoh: list, function, dan expression.

3.Pemeriksaan & Konversi Mode Fungsi mode(x) digunakan untuk mengecek tipe mode, dan length(x) untuk mengecek jumlah elemen.

#3.2 Changing the Length of an Object Menambahkan elemen di luar jangkauan indeks yang ada akan memperpanjang objek secara otomatis (elemen di antaranya akan diisi

e <- numeric()  
e[3] <- 17  

alpha <- 1:10
length(alpha) <- 3  
alpha
## [1] 1 2 3
length
## function (x)  .Primitive("length")

#3.3 Getting and Setting Attributes Selain mode dan length, sebuah object dapat memiliki attributes. Attributes adalah informasi tambahan yang melekat pada sebuah object.

z <- 1:100
attributes(z)
## NULL
attr(z, "dim") <- c(10, 10)

z
##       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
##  [1,]    1   11   21   31   41   51   61   71   81    91
##  [2,]    2   12   22   32   42   52   62   72   82    92
##  [3,]    3   13   23   33   43   53   63   73   83    93
##  [4,]    4   14   24   34   44   54   64   74   84    94
##  [5,]    5   15   25   35   45   55   65   75   85    95
##  [6,]    6   16   26   36   46   56   66   76   86    96
##  [7,]    7   17   27   37   47   57   67   77   87    97
##  [8,]    8   18   28   38   48   58   68   78   88    98
##  [9,]    9   19   29   39   49   59   69   79   89    99
## [10,]   10   20   30   40   50   60   70   80   90   100

Attribute dim membuat R memperlakukan vector tersebut sebagai matrix berukuran 10 × 10

#3.4 The Class of an Object Semua object dalam R memiliki class. Untuk simple vector, class biasanya berkaitan dengan jenis datanya, misalnya:

“numeric” “logical” “character” “list”

Class lain yang disebutkan dalam materi antara lain:

“matrix” “array” “factor” “data.frame”

Class penting karena fungsi dalam R dapat memberikan perilaku berbeda tergantung class object. Misalnya, fungsi print(), plot(), dan summary() dapat memperlakukan object secara berbeda berdasarkan class-nya.

mat <- matrix(
  c(1, 2, 3, 4, 5, 6),
  nrow = 2,
  ncol = 3
)

mat
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
class(mat)
## [1] "matrix" "array"

Class menentukan bagaimana suatu object diperlakukan oleh fungsi-fungsi di R. Fungsi unclass() dapat digunakan untuk melihat struktur object tanpa efek class-nya.

Fungsi unclass() R menyediakan fungsi: unclass()

Fungsi ini digunakan untuk menghilangkan efek class suatu object secara sementara.

Dalam materi, contoh yang diberikan adalah jika sebuah object memiliki class “data.frame”, maka unclass() dapat menampilkan struktur dasarnya sebagai list.

mahasiswa <- data.frame(
  nama = c("Ivan", "Budi"),
  umur = c(20, 21)
)

mahasiswa
##   nama umur
## 1 Ivan   20
## 2 Budi   21

###BAB 4 ORDERED AND UNORDERED FACTORS Bab 4 membahas factor, yaitu objek vector yang digunakan untuk menunjukkan klasifikasi atau pengelompokan data. R menyediakan dua jenis factor:

#4.1 A Specific Example Pada materi, diberikan contoh data asal wilayah dari 30 orang. Data tersebut disimpan dalam character vector, kemudian diubah menjadi factor menggunakan fungsi:

factor()

jurusan <- c(
  "Informatika",
  "Sistem Informasi",
  "Informatika",
  "Teknik Elektro",
  "Informatika",
  "Sistem Informasi"
)

jurusan
## [1] "Informatika"      "Sistem Informasi" "Informatika"      "Teknik Elektro"  
## [5] "Informatika"      "Sistem Informasi"

#Mengubah menjadi Factor

jurusan_factor <- factor(jurusan)

jurusan_factor
## [1] Informatika      Sistem Informasi Informatika      Teknik Elektro  
## [5] Informatika      Sistem Informasi
## Levels: Informatika Sistem Informasi Teknik Elektro

Fungsi factor() digunakan untuk mengubah data kategorikal menjadi factor. Factor menyimpan kategori unik sebagai levels, yang dapat dilihat menggunakan fungsi levels().

#4.2 Fungsi tapply() dan Ragged Arrays Fungsi: tapply() digunakan untuk menerapkan sebuah fungsi pada kelompok-kelompok data.

nilai <- c(
  80, 90, 75,
  85, 95, 70,
  88, 92, 78
)

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

menghitung rata rata

rata_rata <- tapply(
  nilai,
  kelas_factor,
  mean
)

rata_rata
##        A        B        C 
## 81.66667 83.33333 86.00000

Fungsi tapply() digunakan untuk melakukan perhitungan berdasarkan kelompok. Dengan tapply(), kita dapat menghitung rata-rata, jumlah, nilai maksimum, minimum, dan fungsi lainnya untuk setiap kategori.

#4.3 Ordered Factors Secara umum, levels factor disimpan berdasarkan:

Urutan alfabetis, atau Urutan yang ditentukan secara eksplisit. Namun, terkadang sebuah kategori memiliki urutan alami.

pendidikan <- ordered(
  c(
    "SMA",
    "S1",
    "S2",
    "S1",
    "SMA"
  ),
  
  levels = c(
    "SMA",
    "S1",
    "S2"
  )
)

pendidikan
## [1] SMA S1  S2  S1  SMA
## Levels: SMA < S1 < S2

Perbandingan Ordered Factor Karena memiliki urutan, ordered factor dapat dibandingkan. tingkat[1] < tingkat[2]

Ordered factor digunakan ketika kategori memiliki urutan alami. Fungsi ordered() digunakan untuk membuat factor yang menyimpan informasi mengenai urutan tersebut.

Inti Bab 4: Factor sangat penting dalam R untuk mengelompokkan data kategorikal. Dengan factor dan tapply(), kita dapat melakukan analisis data berdasarkan kelompok secara lebih mudah. Ordered factor digunakan apabila kategori memiliki tingkatan atau urutan tertentu.

###5 ARRAY AND MATRICES membahas Array dan Matrix dalam R

#5.1 Arrays Array adalah kumpulan data yang memiliki lebih dari satu indeks atau dimensi.

z <- 1:12

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

dim(z)
## [1] 3 2 2

Array digunakan untuk menyimpan data dalam beberapa dimensi. Matrix adalah bentuk khusus dari array yang memiliki dua dimensi.

#5.2 Array Indexing Elemen dalam array dapat diakses menggunakan index atau subscript di dalam tanda kurung siku []

# Membuat array
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[1, 2, 1]
## [1] 4
a[2, , ]
##      [,1] [,2]
## [1,]    2   14
## [2,]    5   17
## [3,]    8   20
## [4,]   11   23
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
dim(a)
## [1] 3 4 2

Indexing digunakan untuk mengambil bagian tertentu dari array. Tanda kosong pada index berarti mengambil seluruh elemen pada dimensi tersebut.

#5.3 Index Matrices index matrix digunakan untuk: Mengambil elemen tertentu dari matrix atau array. Mengubah elemen tertentu. Untuk matrix dua dimensi, index matrix memiliki: Kolom pertama → nomor baris. Kolom kedua → nomor kolom.

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

Index matrix memungkinkan kita memilih atau mengubah beberapa posisi data sekaligus. Setiap baris pada index matrix menunjukkan posisi elemen yang akan diakses.

#5.4 Fungsi array() Fungsi array() digunakan untuk membuat array secara langsung. bentuk umum:

array(data, dim)

contoh :

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

Z <- array(
  0,
  c(3, 4, 2)
)

Z
## , , 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

Fungsi array() mempermudah pembuatan array dengan menentukan data dan dimensinya secara langsung.

##5.4.1 Mixed Vector and Array Arithmetic — Recycling Rule R dapat melakukan operasi antara: Vector dengan vector Array dengan array Vector dengan array Jika sebuah vector lebih pendek, nilainya dapat diulang agar sesuai dengan ukuran object lain. Proses ini disebut recycling rule.

x <- c(1, 2)

y <- c(10, 20, 30, 40)

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

contoh dengan array

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

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

A + B
##      [,1] [,2] [,3]
## [1,]    2    4    6
## [2,]    3    5    7

Recycling rule memungkinkan R mengulang elemen vector pendek agar dapat digunakan dalam operasi dengan object yang lebih besar.

#5.5 Outer Product of Two Arrays Outer product adalah operasi yang menghasilkan semua kemungkinan perkalian antara elemen dua vector atau array. operator yang digunakan adalah %o% atau outer()

contoh:

x <- c(1, 2, 3)

y <- c(4, 5)

outer(
  x,
  y,
  "+"
)
##      [,1] [,2]
## [1,]    5    6
## [2,]    6    7
## [3,]    7    8

atau bisa juga

x %o% y
##      [,1] [,2]
## [1,]    4    5
## [2,]    8   10
## [3,]   12   15

Outer product digunakan untuk melakukan operasi antara setiap elemen object pertama dengan setiap elemen object kedua.

#5.6 Generalized Transpose of an Array Transpose adalah proses menukar posisi baris dan kolom. Untuk array berdimensi lebih tinggi, R memiliki konsep generalized transpose melalui pengaturan ulang urutan dimensi.

A <- matrix(
  1:6,
  nrow = 2,
  ncol = 3
)
A
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
#lakukan transpose
t(A)
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
## [3,]    5    6

Transpose digunakan untuk menukar baris menjadi kolom dan kolom menjadi baris.

#5.7 Matrix Facilities R memiliki berbagai fasilitas untuk melakukan operasi pada matrix. Beberapa fungsi penting adalah:

matrix() dim() nrow() ncol() t() diag() solve() det()

Matrix merupakan array dua dimensi yang sangat penting dalam perhitungan matematika dan statistika. buat matriks :

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

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

lihat kolom

ncol(A)
## [1] 3

melihat dimensi

ncol(A)
## [1] 3

##Penjumlahan Matriks

A <- matrix(1:4, 2, 2)

B <- matrix(5:8, 2, 2)

A + B
##      [,1] [,2]
## [1,]    6   10
## [2,]    8   12

untuk perkalian cukup gunakan tanda *

A * B
##      [,1] [,2]
## [1,]    5   21
## [2,]   12   32

R menyediakan operator dan fungsi khusus untuk melakukan berbagai operasi matrix.

##Determinan Matrix Determinan adalah nilai khusus yang dapat dihitung dari matrix persegi.

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

A
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
det(A)
## [1] -2

Fungsi det() digunakan untuk menghitung determinan matrix.

##5.8 Forming Partitioned Matrices — cbind() dan rbind() Matrix dapat dibuat dengan menggabungkan vector atau matrix. Dua fungsi penting: cbind() Digunakan untuk menggabungkan data berdasarkan kolom.

rbind() Digunakan untuk menggabungkan data berdasarkan baris. Buku menjelaskan bahwa cbind() menggabungkan object secara horizontal, sedangkan rbind() secara vertikal.

Cbind :

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 <- c(1, 2, 3)

y <- c(4, 5, 6)

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

cbind() → menggabungkan berdasarkan kolom rbind() → menggabungkan berdasarkan baris

Keduanya menghasilkan object dengan status matrix.

#5.9 Fungsi c() dengan Arrays Fungsi: c()

digunakan untuk menggabungkan data. Namun, berbeda dengan cbind() dan rbind(), fungsi c() tidak mempertahankan atribut dim dan dimnames.

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

X
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
vec <- as.vector(X)

vec
## [1] 1 2 3 4 5 6

Jika ingin mengubah matrix atau array menjadi vector, gunakan:

as.vector()

#5.10 Frequency Tables from Factors Frequency table adalah tabel yang menunjukkan jumlah kemunculan setiap kategori. Fungsi yang digunakan: table() Table 1 factor

jurusan <- factor(
  c(
    "Informatika",
    "SI",
    "Informatika",
    "TI",
    "SI",
    "Informatika"
  )
)

table(jurusan)
## jurusan
## Informatika          SI          TI 
##           3           2           1

2 factor

jurusan <- factor(
  c(
    "Informatika",
    "SI",
    "Informatika",
    "TI",
    "SI",
    "Informatika"
  )
)

jenis_kelamin <- factor(
  c(
    "L",
    "P",
    "L",
    "L",
    "P",
    "P"
  )
)
table(
  jurusan,
  jenis_kelamin
)
##              jenis_kelamin
## jurusan       L P
##   Informatika 2 1
##   SI          0 2
##   TI          1 0

Fungsi table() digunakan untuk menghitung jumlah kemunculan setiap kategori.

Satu factor → tabel frekuensi sederhana. Dua factor → tabel frekuensi dua arah. Lebih dari dua factor → array frekuensi multidimensi.

Inti Bab 5: Array dan matrix merupakan struktur data penting dalam R untuk menyimpan dan mengolah data multidimensi. R menyediakan fasilitas indexing, operasi matematika, operasi matrix, serta fungsi seperti array(), matrix(), cbind(), rbind(), dan table() untuk memanipulasi data tersebut.