###Bab 1:INTRODUCTION AND PRELIMINARIES #1.1 Pengertian R R adalah lingkungan perangkat lunak yang digunakan untuk manipulasi data, perhitungan, analisis data, dan penyajian grafik. R juga memiliki bahasa pemrograman yang mendukung berbagai operasi seperti kondisi (if), perulangan (loop), pembuatan fungsi, serta input dan output.

R banyak digunakan dalam bidang statistika karena menyediakan berbagai metode statistik, baik yang tersedia pada lingkungan dasar R maupun melalui package tambahan. Analisis dalam R umumnya dilakukan secara bertahap, kemudian hasil setiap tahap dapat disimpan dalam bentuk object untuk digunakan kembali pada tahap berikutnya.

#1.2 Menggunakan R secara Interaktif

Ketika R dijalankan, pengguna dapat memasukkan perintah secara langsung melalui console. Secara default, R menggunakan tanda > sebagai prompt yang menunjukkan bahwa R siap menerima perintah. contoh: > 10 + 5 [1] 15

Penggunaan R secara interaktif memungkinkan pengguna memasukkan perintah dan langsung melihat hasilnya. Hal ini memudahkan proses belajar, pengujian perintah, serta analisis data secara bertahap.

#1.3 R dan Statistika

R dapat digunakan sebagai lingkungan untuk menerapkan berbagai teknik statistika, baik teknik statistik klasik maupun metode yang lebih modern. Sebagian fungsi tersedia pada base R, sedangkan metode lainnya dapat diperoleh melalui package.

# Membuat data
data <- c(70, 75, 80, 85, 90)

# Menghitung rata-rata
mean(data)
## [1] 80
# Menghitung varians
var(data)
## [1] 62.5
# Nilai minimum
min(data)
## [1] 70
# Nilai maksimum
max(data)
## [1] 90

R dapat membantu proses analisis statistika mulai dari perhitungan sederhana sampai analisis yang lebih kompleks. Pengguna dapat menyimpan hasil analisis sebagai object sehingga hasil tersebut dapat digunakan kembali

#1.4 Perintah Dasar dalam R R memiliki sintaks yang sederhana, tetapi bersifat case-sensitive. Artinya, huruf besar dan huruf kecil dianggap berbeda. Contoh: nilai <- 80 Nilai <- 90

nilai Nilai Outputnya berbeda karena nilai dan Nilai merupakan dua nama object yang berbeda.

#1.5 Bantuan atau Help pada R

R memiliki fasilitas bantuan bawaan yang dapat digunakan untuk mencari informasi mengenai fungsi tertentu. Salah satu cara yang digunakan adalah: help(mean) Fasilitas help() sangat berguna untuk memahami cara penggunaan fungsi dalam R, sedangkan ?? dapat digunakan untuk mencari topik yang lebih luas.

#1.6 Menjalankan Perintah dari File

Perintah R dapat disimpan dalam sebuah file dengan ekstensi .R. File tersebut kemudian dapat dijalankan menggunakan fungsi source() contoh: x <- c(10, 20, 30, 40, 50) Penyimpanan kode dalam file .R membuat analisis lebih mudah diulang dan dikelola. Fungsi source() dapat digunakan untuk menjalankan kembali kumpulan perintah yang telah disimpan.

#1.7 Object dan Workspace

Dalam R, berbagai entitas yang dibuat dan dimanipulasi disebut object. Object dapat berupa variabel, array, angka, character string, fungsi, maupun struktur data lainnya. Kumpulan object yang sedang tersimpan dalam suatu sesi R disebut workspace. Untuk melihat object yang terdapat dalam workspace: objects() Materi juga menjelaskan bahwa workspace dapat disimpan dalam .RData, sedangkan riwayat perintah dapat disimpan dalam .Rhistory

#1.8 Contoh Praktik Bab 1

Berikut contoh sederhana yang menggabungkan beberapa materi Bab 1:

# 1. Membuat object
x <- 10
y <- 20

# 2. Melakukan perhitungan
x + y
## [1] 30
x * y
## [1] 200
y - x
## [1] 10
y / x
## [1] 2
# 3. Membuat data
nilai <- c(70, 75, 80, 85, 90)

# 4. Melihat object
ls()
## [1] "data"  "nilai" "x"     "y"
# 5. Menghitung statistik sederhana
mean(nilai)
## [1] 80
min(nilai)
## [1] 70
max(nilai)
## [1] 90
sum(nilai)
## [1] 400
# 6. Melihat bantuan fungsi
?mean
## starting httpd help server ... done
# 7. Menghapus object
rm(x, y)

# 8. Melihat object setelah penghapusan
ls()
## [1] "data"  "nilai"

###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.

###Bab 6 Lists dan Data Frames #6.1 List Penjalasan List adalah objek R yang dapat menyimpan beberapa objek dengan tipe data berbeda dalam satu struktur. Setiap komponen dapat diakses menggunakan [[ ]], [ ], atau $.

# Membuat list
data_mahasiswa <- list(
  nama = "Ivan",
  umur = 18,
  nilai = c(80, 85, 90)
)

# Menampilkan list
data_mahasiswa
## $nama
## [1] "Ivan"
## 
## $umur
## [1] 18
## 
## $nilai
## [1] 80 85 90
# Mengakses komponen
data_mahasiswa[[1]]
## [1] "Ivan"
data_mahasiswa$nama
## [1] "Ivan"
data_mahasiswa$nilai
## [1] 80 85 90
# Melihat jumlah komponen
length(data_mahasiswa)
## [1] 3
# Perbedaan [[ ]] dan [ ]
data_mahasiswa[[1]]
## [1] "Ivan"
data_mahasiswa[1]
## $nama
## [1] "Ivan"

List digunakan untuk menyimpan berbagai jenis data dalam satu objek dan memudahkan pengelompokan data.

#6.2 Constructing and Modifying Lists Penjelasan: List dibuat menggunakan list(). Komponen baru dapat ditambahkan dan nilai komponen yang sudah ada dapat diubah

# Membuat list
mahasiswa <- list(
  nama = "Ivan",
  umur = 18,
  jurusan = "Statistika",
  nilai = c(80, 85, 90)
)

# Menampilkan list
mahasiswa
## $nama
## [1] "Ivan"
## 
## $umur
## [1] 18
## 
## $jurusan
## [1] "Statistika"
## 
## $nilai
## [1] 80 85 90
# Menambahkan komponen
mahasiswa$semester <- 1

# Mengubah komponen
mahasiswa$umur <- 19

# Menampilkan hasil
mahasiswa
## $nama
## [1] "Ivan"
## 
## $umur
## [1] 19
## 
## $jurusan
## [1] "Statistika"
## 
## $nilai
## [1] 80 85 90
## 
## $semester
## [1] 1

List bersifat fleksibel karena komponennya dapat ditambahkan dan diubah sesuai kebutuhan.

#6.3 Data Frames Penjelasan: Data frame adalah struktur data berbentuk tabel yang terdiri dari baris dan kolom. Kolom dapat memiliki tipe data berbeda, tetapi panjang setiap kolom harus sama.

# Membuat data frame
data_mahasiswa <- data.frame(
  nama = c("Ivan", "Budi", "Andi"),
  umur = c(18, 19, 18),
  nilai = c(85, 90, 80)
)

# Menampilkan data
data_mahasiswa
##   nama umur nilai
## 1 Ivan   18    85
## 2 Budi   19    90
## 3 Andi   18    80
# Mengakses kolom
data_mahasiswa$nama
## [1] "Ivan" "Budi" "Andi"
data_mahasiswa$nilai
## [1] 85 90 80
# Menghitung rata-rata nilai
mean(data_mahasiswa$nilai)
## [1] 85

Data frame digunakan untuk menyimpan dan mengolah data berbentuk tabel dalam R.

#6.3.1 Making Data Frames Penjelasan: Data frame dapat dibuat dengan data.frame(). List yang sesuai juga dapat diubah menjadi data frame menggunakan as.data.frame()

# Membuat vector
nama <- c("Ivan", "Budi", "Andi")
umur <- c(18, 19, 18)
nilai <- c(85, 90, 80)

# Membuat data frame
mahasiswa <- data.frame(
  nama = nama,
  umur = umur,
  nilai = nilai
)

# Menampilkan data frame
mahasiswa
##   nama umur nilai
## 1 Ivan   18    85
## 2 Budi   19    90
## 3 Andi   18    80
# Membuat list
data_list <- list(
  nama = c("Ivan", "Budi", "Andi"),
  nilai = c(85, 90, 80)
)

# Mengubah list menjadi data frame
df <- as.data.frame(data_list)

# Menampilkan hasil
df
##   nama nilai
## 1 Ivan    85
## 2 Budi    90
## 3 Andi    80

data.frame() digunakan untuk membuat data frame, sedangkan as.data.frame() digunakan untuk mengubah objek menjadi data frame.

#6.3.2 attach() and detach() Penjelasan: attach() membuat variabel dalam data frame dapat dipanggil langsung tanpa menuliskan nama data frame. detach() digunakan untuk melepaskannya dari search path.

# Membuat data frame
mahasiswa <- data.frame(
  nama = c("Ivan", "Budi", "Andi"),
  nilai = c(85, 90, 80)
)

# Menghubungkan data frame
attach(mahasiswa)
## The following objects are masked _by_ .GlobalEnv:
## 
##     nama, nilai
# Mengakses variabel secara langsung
nama
## [1] "Ivan" "Budi" "Andi"
nilai
## [1] 85 90 80
# Menghitung rata-rata
mean(nilai)
## [1] 85
# Melepaskan data frame
detach(mahasiswa)

attach() memudahkan akses variabel, sedangkan detach() menghapus data frame dari search path.

#6.3.3 Working with Data Frames Penjelasan: Data frame sebaiknya digunakan untuk mengelompokkan variabel yang berkaitan dengan satu permasalahan agar data lebih terorganisir dan mudah dianalisis.

# Membuat data frame
mahasiswa <- data.frame(
  nama = c("Ivan", "Budi", "Andi"),
  nilai = c(85, 90, 80)
)

# Menambahkan kolom baru
mahasiswa$grade <- c("B", "A", "B")

# Menampilkan data
mahasiswa
##   nama nilai grade
## 1 Ivan    85     B
## 2 Budi    90     A
## 3 Andi    80     B
# Mengakses kolom nilai
mahasiswa$nilai
## [1] 85 90 80
# Menghitung rata-rata
mean(mahasiswa$nilai)
## [1] 85

#6.3.4 Attaching Arbitrary Lists Penjelasan: attach() juga dapat digunakan pada objek berbentuk list. Setelah digunakan, list dapat dilepaskan menggunakan detach().

# Membuat list
data <- list(
  nama = "Ivan",
  nilai = 85
)

# Menghubungkan list
attach(data)
## The following objects are masked _by_ .GlobalEnv:
## 
##     nama, nilai
# Mengakses komponen
nama
## [1] "Ivan" "Budi" "Andi"
nilai
## [1] 85 90 80
# Melepaskan list
detach(data)

List dapat di-attach() agar komponennya dapat dipanggil langsung berdasarkan nama.

#6.3.5 Managing the Search Path Penjelasan: Search path menunjukkan tempat-tempat yang digunakan R untuk mencari objek. search() digunakan untuk melihat search path dan ls() untuk melihat isi suatu posisi.

# Melihat search path awal
search()
## [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
## [4] "package:grDevices" "package:utils"     "package:datasets" 
## [7] "package:methods"   "Autoloads"         "package:base"
# Membuat data frame
mahasiswa <- data.frame(
  nama = c("Ivan", "Budi"),
  nilai = c(85, 90)
)

# Attach data frame
attach(mahasiswa)
## The following objects are masked _by_ .GlobalEnv:
## 
##     nama, nilai
# Melihat search path
search()
##  [1] ".GlobalEnv"        "mahasiswa"         "package:stats"    
##  [4] "package:graphics"  "package:grDevices" "package:utils"    
##  [7] "package:datasets"  "package:methods"   "Autoloads"        
## [10] "package:base"
# Melihat objek pada posisi kedua
ls(2)
## [1] "nama"  "nilai"
# Detach data frame
detach("mahasiswa")

# Melihat search path setelah detach
search()
## [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
## [4] "package:grDevices" "package:utils"     "package:datasets" 
## [7] "package:methods"   "Autoloads"         "package:base"

search() digunakan untuk mengetahui objek yang aktif dalam search path, sedangkan ls() digunakan untuk melihat isinya.

###BAB 7 — READING DATA FROM FILES

#7.1 The read.table() Function Penjelasan: read.table() digunakan untuk membaca data berbentuk tabel dari file eksternal ke dalam data frame. Jika baris pertama berisi nama kolom, gunakan header=TRUE.

# Memb# Membaca file
# Membuat data untuk contoh
data_mahasiswa <- data.frame(
  nama = c("Ivan", "Budi", "Andi"),
  umur = c(18, 19, 18),
  nilai = c(85, 90, 80)
)

# Menyimpan data ke file teks
write.table(
  data_mahasiswa,
  "mahasiswa.txt",
  row.names = FALSE
)

# Membaca file menggunakan read.table()
mahasiswa <- read.table(
  "mahasiswa.txt",
  header = TRUE
)

# Menampilkan data
mahasiswa
##   nama umur nilai
## 1 Ivan   18    85
## 2 Budi   19    90
## 3 Andi   18    80
# Melihat struktur data
str(mahasiswa)
## 'data.frame':    3 obs. of  3 variables:
##  $ nama : chr  "Ivan" "Budi" "Andi"
##  $ umur : int  18 19 18
##  $ nilai: int  85 90 80
# Menampilkan 6 baris pertama
head(mahasiswa)
##   nama umur nilai
## 1 Ivan   18    85
## 2 Budi   19    90
## 3 Andi   18    80

#7.2 The scan() Function Penjelasan: scan() digunakan untuk membaca data dari file secara langsung. Data dapat dibaca sebagai vector atau beberapa komponen dalam bentuk list.

# Membuat file input.dat terlebih dahulu
cat(
  "A001 85 18
A002 90 19
A003 80 18",
  file = "input.dat"
)

# Membaca file menggunakan scan()
inp <- scan(
  "input.dat",
  what = list(
    id = "",
    nilai = 0,
    umur = 0
  )
)

# Menampilkan hasil
inp
## $id
## [1] "A001" "A002" "A003"
## 
## $nilai
## [1] 85 90 80
## 
## $umur
## [1] 18 19 18
# Mengakses masing-masing komponen
inp$id
## [1] "A001" "A002" "A003"
inp$nilai
## [1] 85 90 80
inp$umur
## [1] 18 19 18

Dataset bawaan R dapat langsung digunakan untuk latihan dan analisis tanpa harus mengimpor data dari luar

#7.3.1 Loading Data from Other R Packages Penjelasan: Dataset juga dapat berasal dari package R lainnya. Dataset dari package tertentu dapat dipanggil menggunakan argumen

# Melihat dataset yang tersedia pada package rpart
data(package = "rpart")

# Mengambil dataset dari package datasets
data(Puromycin, package = "datasets")

# Menampilkan data
Puromycin
##    conc rate     state
## 1  0.02   76   treated
## 2  0.02   47   treated
## 3  0.06   97   treated
## 4  0.06  107   treated
## 5  0.11  123   treated
## 6  0.11  139   treated
## 7  0.22  159   treated
## 8  0.22  152   treated
## 9  0.56  191   treated
## 10 0.56  201   treated
## 11 1.10  207   treated
## 12 1.10  200   treated
## 13 0.02   67 untreated
## 14 0.02   51 untreated
## 15 0.06   84 untreated
## 16 0.06   86 untreated
## 17 0.11   98 untreated
## 18 0.11  115 untreated
## 19 0.22  131 untreated
## 20 0.22  124 untreated
## 21 0.56  144 untreated
## 22 0.56  158 untreated
## 23 1.10  160 untreated
# Melihat struktur data
str(Puromycin)
## 'data.frame':    23 obs. of  3 variables:
##  $ conc : num  0.02 0.02 0.06 0.06 0.11 0.11 0.22 0.22 0.56 0.56 ...
##  $ rate : num  76 47 97 107 123 139 159 152 191 201 ...
##  $ state: Factor w/ 2 levels "treated","untreated": 1 1 1 1 1 1 1 1 1 1 ...
##  - attr(*, "reference")= chr "A1.3, p. 269"

R dapat mengambil dataset dari berbagai package sehingga pilihan data untuk latihan dan analisis menjadi lebih banyak.

#7.4 Editing Data Penjelasan: edit() digunakan untuk mengedit data frame atau matrix melalui tampilan seperti spreadsheet. fix() digunakan untuk mengedit objek secara langsung.

# Membuat data frame
mahasiswa <- data.frame(
  nama = c("Ivan", "Budi", "Andi"),
  nilai = c(85, 90, 80)
)

# Mengedit dan menyimpan sebagai objek baru
mahasiswa_baru <- edit(mahasiswa)

# Menampilkan data hasil edit
mahasiswa_baru
##   nama nilai
## 1 Ivan    85
## 2 Budi    90
## 3 Andi    80
# Mengedit objek secara langsung
fix(mahasiswa)

# Membuat data frame baru melalui editor
data_baru <- edit(data.frame())

edit() dan fix() digunakan untuk melakukan perubahan data secara langsung melalui tampilan seperti spreadsheet, terutama untuk perubahan data dalam jumlah kecil.