Struktur data sangat penting untuk dipahami karena dengan struktur data dapat mengurangi kompleksitas ruang dan waktu dari tugas-tugas yang berbeda. Struktur data sering diatur berdasarkan dimensinya (1D, 2D, atau nD) dan apakah bersifat homogen atau heterogen berdasarka tipe datanya.
Vectors adalah kumpulan terurut dari tipe data dasar dengan panjang tertentu. Vectors adalah struktur data satu dimensi. Ciri-ciri dari vectors ini adalah bahwa semua elemen di dalamnya harus berasal dari tipe data yang identik.
Contoh penulisan vectors:
# vector numerik
x <- c(3, 4, 5, 6)
# vector karakter
y <- c("Apel", "Jeruk", "Rambutan", "Salak")
# vector logika
z <- c("TRUE", "FALSE", "TRUE")
Seringkali nilai vektor tidak lengkap atau ada nilai yang hilang (missing value). Di pemrograman R, nilai missing value dilambangkan dengan NA (not available). Berikut ini adalah contoh penerapan di R:
age <- c(23, 34, NA, 56, 45)
# bisa juga seperti ini -> vektor nama dengan format penulisan name=value
jumlah_buah <- c(apel=3, jeruk=NA, mangga=5, rambutan=3, salak=10)
Kita bisa mengambil satu atau beberapa nilai di dalam vektor dengan memanfaatkan subset. Misalkan ada vektor bilangan berisi 23, 34, 25, 45. Elemen dengan nilai 23 ada pada indeks pertama, 34 pada indeks kedua, 25 pada indeks ketiga, dan 45 pada indeks keempat.
Ada tiga cara pengambilan nilai dalam suatu vektor.
Berikut ini adalah implementasi dari subset.
# list buah-buahan
fruits <- c('apple', 'banana', 'lemon', 'cherry', 'strawberry')
# positive index
fruits[2] # hasilnya mengambil indeks kedua, yaitu banana
## [1] "banana"
fruits[5] # hasilnya mengambil indeks kelima, yaitu strawberry
## [1] "strawberry"
fruits[c(1, 4)] # hasilnya mengambil indeks 1 dan 4, yaitu apple dan cherry
## [1] "apple" "cherry"
# negative index
fruits[-1] # hasilnya adalah mengambil elemen selain indeks 1, yaitu dari banana s.d. strawberry
## [1] "banana" "lemon" "cherry" "strawberry"
fruits[-c(1, 4)] # hasilnya adalah mengambil elemen selain indeks 1 dan 4, yaitu selain apple dan cherry
## [1] "banana" "lemon" "strawberry"
fruits[-c(1:3)] # hasilnya adalah mengambil elemen selain indeks dari 1 s.d. 3, yaitu selain apple, banana, dan lemon
## [1] "cherry" "strawberry"
# logical subset
# mengambil buah-buahan yang jumlah karakternya di atas 5
fruits[nchar(fruits) > 5] # hasilnya menampilkan nama-nama buah seperti banana, cherry, strawberry
## [1] "banana" "cherry" "strawberry"
# mengambi buah-buahan yang namanya mengandung unsur huruf 'e'
fruits[grepl("e", fruits)] # hasilnya apple, lemon, cherry, strawberry
## [1] "apple" "lemon" "cherry" "strawberry"
# memilih nama buah yang berawalan 'a'
fruits[grepl("^a", fruits)] # hasilnya hanya apple
## [1] "apple"
# memilih nama buah dengan beberapa kondisi, seperti mengandung huruf 'a' dan jumlah karakternya lebih dari 5
fruits[grepl("a", fruits) & nchar(fruits) > 5] # hasilnya adalah banana dan strawberry
## [1] "banana" "strawberry"
Berikut ini adalah contoh penggunaan operasi matematika dalam vektor
numbers <- c(4, 6, 7, 3, 2, 9, 5)
# memperoleh nilai maksimum
max(numbers)
## [1] 9
# memperoleh nilai minimum
min(numbers)
## [1] 2
# memperoleh range vektor
range(numbers)
## [1] 2 9
# memperoleh jumlah vektor
length(numbers)
## [1] 7
# total penjumlahan
sum(numbers)
## [1] 36
# product element vector -> perkalian semua elemen
prod(numbers)
## [1] 45360
# rata-rata vector
mean(numbers)
## [1] 5.142857
# median
median(numbers)
## [1] 5
# standar deviasi
sd(numbers)
## [1] 2.410295
# varians
var(numbers)
## [1] 5.809524
# mengurutkan elemen vektor
sort(numbers)
## [1] 2 3 4 5 6 7 9
Untuk membuat deret angka dalam vektor, kita bisa menggunakan operasi colon atau titik dua (:). Operasi ini digunakan untuk memisahkan antara nilai awal dan nilai akhir deret bilangan. Berikut ini adalah contoh operasi deret.
# vektor bernilai 1 s.d. 10
1:10
## [1] 1 2 3 4 5 6 7 8 9 10
# vektor bernilai 10 s.d. -1
10:-1
## [1] 10 9 8 7 6 5 4 3 2 1 0 -1
deret <- 1:20
sum(deret)
## [1] 210
Ada juga cara lain dalam membuat deret, dengan menggunakan fungsi
seq, seperti pada contoh berikut.
# membuat deret aritmatika dimana dimulai dari 1 dengan pertambahan 3
# sehingga deretnya menjadi: 1, 4, 7. 10, 13, 16, 19, 22, 25
deret_aritmatika <- seq(1, 25, by = 3)
deret_aritmatika
## [1] 1 4 7 10 13 16 19 22 25
# deret aritmatika dengan interval pecahan
deret_pecahan <- seq(0, 1, by = 0.1)
deret_pecahan
## [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
# deret aritmatika mundur
deret_mundur <- seq(10, 1, by = -1)
deret_mundur
## [1] 10 9 8 7 6 5 4 3 2 1
# deret dengan jumlah elemen tertentu tapi jaraknya mengikuti
deret_jarak_sama <- seq(1, 10, length.out = 5)
deret_jarak_sama # 1.00 3.25 5.50 7.75 10.00
## [1] 1.00 3.25 5.50 7.75 10.00
Selain itu, ada juga penggunaan nilai berulang, kita bisa menggunakan
fungsi rep. Berikut adalah contohnya:
rep(5, 8) # angka 5 (parameter 1) akan dicetak/diulang sebanyak 8 kali (parameter 2)
## [1] 5 5 5 5 5 5 5 5
Untuk deret geometrik, ada juga fungsi yang bisa digunakan, yaitu
cumprod().
rasio <- 2
jumlah_bilangan <- 5
deret_geometri <- cumprod(rep(rasio, jumlah_bilangan))
print(deret_geometri) # 2 4 8 16 32
## [1] 2 4 8 16 32
# untuk penghitungan eksponensial
nilai_awal <- 3
rasio <- 3
jumlah_bilangan <- 4
deret_eksponensial <- nilai_awal * rasio^(0:(jumlah_bilangan - 1))
print(deret_eksponensial) # 3 9 27 81
## [1] 3 9 27 81
# kita juga bisa memanfaatkan fungsi
fungsi_geometrik <- function(nilai_awal, rasio, jumlah_bilangan) {
return(nilai_awal * rasio^(0:(jumlah_bilangan - 1)))
}
fungsi_geometrik(2, 4, 6) # 2 8 32 128 512 2048
## [1] 2 8 32 128 512 2048
fungsi_aritmatik <- function(nilai_awal, selisih, jumlah_bilangan) {
return(nilai_awal + (0:(jumlah_bilangan - 1)) * selisih)
}
fungsi_aritmatik(1, 3, 6) # 1 4 7 10 13 16
## [1] 1 4 7 10 13 16
Lists itu seperti wadah, dimana berisi campuran tipe data. Lists merupakan jenis vectors khusus di mana setiap elemen dapat menjadi jenis yang berbeda. Berikut ini adalah contoh penggunaan list.
mylist <- list(2, "A", c(4, 5, 2), iris[1:5,])
mylist
## [[1]]
## [1] 2
##
## [[2]]
## [1] "A"
##
## [[3]]
## [1] 4 5 2
##
## [[4]]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
Untuk memanggil elemen dari list, ada beberapa cara, seperti di bawah ini.
# Menampilkan index kedua dengan aksesor kurung siku tunggal
mylist[2] # Akses subset dari list
## [[1]]
## [1] "A"
# Menampilkan index kedua dengan aksesor kurung siku ganda
mylist[[2]] # Akses elemen tunggal
## [1] "A"
# Menampilkan index kedua s/d ketiga
mylist[2:3]
## [[1]]
## [1] "A"
##
## [[2]]
## [1] 4 5 2
# menghitung jumlah elemen dalam list
length(mylist)
## [1] 4
Seperti halnya vektor, di dalam list juga kita bisa memberi nama pada setiap elemen list untuk mempermudah dalam akses dan pemahaman.
# Membuat list dengan nama elemen
student <- list(
name = "Andi",
age = 21,
grades = c(90, 85, 88)
)
print(student)
## $name
## [1] "Andi"
##
## $age
## [1] 21
##
## $grades
## [1] 90 85 88
# Mengakses nama-nama elemen
names(student)
## [1] "name" "age" "grades"
Untuk mengakses elemen list seperti contoh di atas, kita bisa
menggunakan dollar sign $ dan diikuti dengan nama
elemen.
student$name
## [1] "Andi"
# Akses elemen di dalam elemen, seperti grades
student$grades[2]
## [1] 85
List student di atas bisa kita lakukan manipulasi dengan
beberapa cara, seperti pada kode berikut ini.
# mengubah usia mahasiswa
student$age <- 24
print(student$age)
## [1] 24
# Menambahkan alamat ke dalam list
student$address <- "Jakarta"
print(student)
## $name
## [1] "Andi"
##
## $age
## [1] 24
##
## $grades
## [1] 90 85 88
##
## $address
## [1] "Jakarta"
# Menghapus elemen address
student$address <- NULL
print(student)
## $name
## [1] "Andi"
##
## $age
## [1] 24
##
## $grades
## [1] 90 85 88
Penambahan elemen baru juga bisa menggunakan fungsi yang sudah
disediakan oleh R, yaitu append().
# Menambahkan elemen baru di posisi kedua
student <- append(student, list(sex = "Male"), after = 1)
print(student)
## $name
## [1] "Andi"
##
## $sex
## [1] "Male"
##
## $age
## [1] 24
##
## $grades
## [1] 90 85 88
List dapat mengandung list lain sebagai elemennya, ini disebut nested list.
# Membuat list bersarang
nested_list <- list(
sublist1 = list(a = 1, b = 2),
sublist2 = list(c = 3, d = 4)
)
print(nested_list)
## $sublist1
## $sublist1$a
## [1] 1
##
## $sublist1$b
## [1] 2
##
##
## $sublist2
## $sublist2$c
## [1] 3
##
## $sublist2$d
## [1] 4
# Membuat nested list untuk company
company <- list(
name = "DJPb",
employees = list(
list(
name = "Ari",
age = 40,
position = "Manager"
),
list(
name = "Budi",
age = 30,
position = "Accountant"
)
),
location = "Bandung"
)
print(company)
## $name
## [1] "DJPb"
##
## $employees
## $employees[[1]]
## $employees[[1]]$name
## [1] "Ari"
##
## $employees[[1]]$age
## [1] 40
##
## $employees[[1]]$position
## [1] "Manager"
##
##
## $employees[[2]]
## $employees[[2]]$name
## [1] "Budi"
##
## $employees[[2]]$age
## [1] 30
##
## $employees[[2]]$position
## [1] "Accountant"
##
##
##
## $location
## [1] "Bandung"
Untuk mengakses elemen pada nested list tersebut, maka kita bisa gunakan cara berikut.
# Mengakses nama karyawan pertama
company$employees[[1]]$name
## [1] "Ari"
# Karyawan baru
new_employee <- list(
name = "Citra",
age = 28,
position = "Manager"
)
# Menambahkan ke dalam list employees
company$employees <- append(company$employees, list(new_employee))
print(company$employees)
## [[1]]
## [[1]]$name
## [1] "Ari"
##
## [[1]]$age
## [1] 40
##
## [[1]]$position
## [1] "Manager"
##
##
## [[2]]
## [[2]]$name
## [1] "Budi"
##
## [[2]]$age
## [1] 30
##
## [[2]]$position
## [1] "Accountant"
##
##
## [[3]]
## [[3]]$name
## [1] "Citra"
##
## [[3]]$age
## [1] 28
##
## [[3]]$position
## [1] "Manager"
1. as.list()
Kita juga bisa mengkonversi struktur data lain, seperti vektor atau
dataframe ke dalam list dengan fungsi as.list().
# Mengonversi vector ke list
vec <- c(1, 2, 3, 4)
list_from_vec <- as.list(vec)
print(list_from_vec)
## [[1]]
## [1] 1
##
## [[2]]
## [1] 2
##
## [[3]]
## [1] 3
##
## [[4]]
## [1] 4
# Mengonversi dataframe ke list
df <- data.frame(
id = 1:3,
name = c("Ali", "Budi", "Cici"),
score = c(85, 90, 95)
)
list_from_df <- as.list(df)
print(list_from_df)
## $id
## [1] 1 2 3
##
## $name
## [1] "Ali" "Budi" "Cici"
##
## $score
## [1] 85 90 95
2. lapply()
lapply() menerapkan sebuah fungsi ke setiap elemen dalam
list dan mengembalikan hasil dalam bentuk list.
# List angka
kumpulan_bilangan <- list(a = 1:5, b = 6:10, c = 11:15)
# Menggunakan lapply untuk menghitung panjang elemen
lapply(kumpulan_bilangan, length)
## $a
## [1] 5
##
## $b
## [1] 5
##
## $c
## [1] 5
# Menghitung rata-rata setiap elemen list
averages <- lapply(kumpulan_bilangan, mean)
print(averages)
## $a
## [1] 3
##
## $b
## [1] 8
##
## $c
## [1] 13
3. sapply()
sapply() mirip dengan lapply(), tetapi
mencoba menyederhanakan hasilnya menjadi vector atau matrix jika
memungkinkan.
# Menggunakan sapply (lebih ringkas)
sapply(kumpulan_bilangan, length)
## a b c
## 5 5 5
# Menggunakan sapply
averages_simplified <- sapply(kumpulan_bilangan, mean)
print(averages_simplified)
## a b c
## 3 8 13
Dataframes merupakan objek data yang paling populer karena lebih mudah melihat data dalam bentuk tabel, yang terdiri dari banyak kolom dengan tiap kolom berisi list ataupun vector dengan jumlah data yang sama. Untuk membuat data frame kita bisa gunakan function data.frame.
Berikut beberapa hal terkait dataframe:
# Membuat vektor
id <- c(1, 2, 3, 4)
nama <- c("Ari", "Budi", "Citra", "David")
usia <- c(25, 30, 35, 40)
# Membuat DataFrame
df <- data.frame(id, nama, usia)
print(df)
## id nama usia
## 1 1 Ari 25
## 2 2 Budi 30
## 3 3 Citra 35
## 4 4 David 40
Kita juga sudah belajar tentang list dan data frame bisa dibuat dari list.
# Membuat list
data_list <- list(
id = c(1, 2, 3, 4),
nama = c("Ari", "Budi", "Citra", "David"),
usia = c(25, 30, 35, 40)
)
# Membuat DataFrame dari list
df <- as.data.frame(data_list)
print(df)
## id nama usia
## 1 1 Ari 25
## 2 2 Budi 30
## 3 3 Citra 35
## 4 4 David 40
Selain itu, membuat data frame juga bisa bisa melalui file eksternal,
seperti file csv dengan memanfaatkan fungsi read.csv().
student_df <- read.csv("students.csv")
print(student_df)
## id nama usia jurusan
## 1 1 Ari 25 Teknik Informatika
## 2 2 Budi 30 Manajemen
## 3 3 Citra 35 Akuntansi
## 4 4 David 40 Ilmu Komputer
## 5 5 Eko 30 Statistika
## 6 6 Farhan 28 Manajemen
## 7 7 Guruh 24 Statistika
## 8 8 Hadi 34 Manajemen
## 9 9 Irene 27 Akuntansi
## 10 10 Johan 42 Manajemen
## 11 11 Kalam 25 Teknik Industri
## 12 12 Lisa 24 Ilmu Komputer
## 13 13 Mona 28 Bisnis
## 14 14 Nanda 27 Manajemen
## 15 15 Opan 27 Akuntansi
## 16 16 Pendi 38 Teknik Informatika
## 17 17 Qonita 23 Desain Visual
## 18 18 Rafinah 26 Bisnis
## 19 19 Sabrina 30 Statistika
## 20 20 Tariq 26 Agribisnis
Cara akses data frame bisa menggunakan $ atau
[]. Berikut ini adalah contoh penggunaan akses data frame
student_df.
1. Akses Kolom
# mengakses kolom nama
student_df$nama
## [1] "Ari" "Budi" "Citra" "David" "Eko" "Farhan" "Guruh"
## [8] "Hadi" "Irene" "Johan" "Kalam" "Lisa" "Mona" "Nanda"
## [15] "Opan" "Pendi" "Qonita" "Rafinah" "Sabrina" "Tariq"
# atau bisa menggunakan
student_df[["nama"]]
## [1] "Ari" "Budi" "Citra" "David" "Eko" "Farhan" "Guruh"
## [8] "Hadi" "Irene" "Johan" "Kalam" "Lisa" "Mona" "Nanda"
## [15] "Opan" "Pendi" "Qonita" "Rafinah" "Sabrina" "Tariq"
# atau bisa juga
student_df[, "nama"]
## [1] "Ari" "Budi" "Citra" "David" "Eko" "Farhan" "Guruh"
## [8] "Hadi" "Irene" "Johan" "Kalam" "Lisa" "Mona" "Nanda"
## [15] "Opan" "Pendi" "Qonita" "Rafinah" "Sabrina" "Tariq"
1. Akses Baris
# akses baris pertama
student_df[1,]
## id nama usia jurusan
## 1 1 Ari 25 Teknik Informatika
# akses beberapa baris
student_df[1:2,]
## id nama usia jurusan
## 1 1 Ari 25 Teknik Informatika
## 2 2 Budi 30 Manajemen
3. Akses Elemen Spesifik
Kita bisa mengakses elemen spesifik dengan menggabungkan indeks baris dan kolom.
student_df[2, 3] # baris kedua (budi) kolom ketiga (usia)
## [1] 30
student_df[10, 4] # baris kesepuluh kolom keempat (jurusan)
## [1] "Manajemen"
4. Akses berdasarkan kondisik
# Filter data untuk mendapatkan baris di mana usia lebih dari 30
student_df_filtered <- student_df[student_df$usia > 30, ]
print(student_df_filtered)
## id nama usia jurusan
## 3 3 Citra 35 Akuntansi
## 4 4 David 40 Ilmu Komputer
## 8 8 Hadi 34 Manajemen
## 10 10 Johan 42 Manajemen
## 16 16 Pendi 38 Teknik Informatika
Untuk akses dataset bukan dari lokal PC/Laptop, kita bisa coba menggunakan cara berikut.
students <- read.csv("https://raw.githubusercontent.com/ekotwidodo/Kanwil-DJPb-Data-Analytics-2024/main/students.csv")
students
## id nama usia jurusan
## 1 1 Ari 25 Teknik Informatika
## 2 2 Budi 30 Manajemen
## 3 3 Citra 35 Akuntansi
## 4 4 David 40 Ilmu Komputer
## 5 5 Eko 30 Statistika
## 6 6 Farhan 28 Manajemen
## 7 7 Guruh 24 Statistika
## 8 8 Hadi 34 Manajemen
## 9 9 Irene 27 Akuntansi
## 10 10 Johan 42 Manajemen
## 11 11 Kalam 25 Teknik Industri
## 12 12 Lisa 24 Ilmu Komputer
## 13 13 Mona 28 Bisnis
## 14 14 Nanda 27 Manajemen
## 15 15 Opan 27 Akuntansi
## 16 16 Pendi 38 Teknik Informatika
## 17 17 Qonita 23 Desain Visual
## 18 18 Rafinah 26 Bisnis
## 19 19 Sabrina 30 Statistika
## 20 20 Tariq 26 Agribisnis
Mengubah nilai elemen
# Mengubah nilai dalam DataFrame
student_df[2, "usia"] <- 31 # mengubah baris kedua (budi) untuk kolom usia ganti dengan 31
print(student_df)
## id nama usia jurusan
## 1 1 Ari 25 Teknik Informatika
## 2 2 Budi 31 Manajemen
## 3 3 Citra 35 Akuntansi
## 4 4 David 40 Ilmu Komputer
## 5 5 Eko 30 Statistika
## 6 6 Farhan 28 Manajemen
## 7 7 Guruh 24 Statistika
## 8 8 Hadi 34 Manajemen
## 9 9 Irene 27 Akuntansi
## 10 10 Johan 42 Manajemen
## 11 11 Kalam 25 Teknik Industri
## 12 12 Lisa 24 Ilmu Komputer
## 13 13 Mona 28 Bisnis
## 14 14 Nanda 27 Manajemen
## 15 15 Opan 27 Akuntansi
## 16 16 Pendi 38 Teknik Informatika
## 17 17 Qonita 23 Desain Visual
## 18 18 Rafinah 26 Bisnis
## 19 19 Sabrina 30 Statistika
## 20 20 Tariq 26 Agribisnis
Menambah kolom baru
Kita bisa menambahkan kolom baru, misalkan jkel (jenis
kelamin), seperti pada contoh berikut.
student_df$jkel <- c("L","L","P","L","L","L","L","L","P","L","L","P","P","L","L","L","P","P","P","L")
print(student_df)
## id nama usia jurusan jkel
## 1 1 Ari 25 Teknik Informatika L
## 2 2 Budi 31 Manajemen L
## 3 3 Citra 35 Akuntansi P
## 4 4 David 40 Ilmu Komputer L
## 5 5 Eko 30 Statistika L
## 6 6 Farhan 28 Manajemen L
## 7 7 Guruh 24 Statistika L
## 8 8 Hadi 34 Manajemen L
## 9 9 Irene 27 Akuntansi P
## 10 10 Johan 42 Manajemen L
## 11 11 Kalam 25 Teknik Industri L
## 12 12 Lisa 24 Ilmu Komputer P
## 13 13 Mona 28 Bisnis P
## 14 14 Nanda 27 Manajemen L
## 15 15 Opan 27 Akuntansi L
## 16 16 Pendi 38 Teknik Informatika L
## 17 17 Qonita 23 Desain Visual P
## 18 18 Rafinah 26 Bisnis P
## 19 19 Sabrina 30 Statistika P
## 20 20 Tariq 26 Agribisnis L
Menambah baris baru
Menambahkan baris baru dilakukan dengan menggunakan fungsi
rbind().
# Baris baru yang akan ditambahkan
baris_baru <- data.frame(id = 21, nama = "Untung", usia = 41, jurusan = "Bisnis", jkel = "L")
# Menambahkan baris baru
student_df <- rbind(student_df, baris_baru)
print(student_df)
## id nama usia jurusan jkel
## 1 1 Ari 25 Teknik Informatika L
## 2 2 Budi 31 Manajemen L
## 3 3 Citra 35 Akuntansi P
## 4 4 David 40 Ilmu Komputer L
## 5 5 Eko 30 Statistika L
## 6 6 Farhan 28 Manajemen L
## 7 7 Guruh 24 Statistika L
## 8 8 Hadi 34 Manajemen L
## 9 9 Irene 27 Akuntansi P
## 10 10 Johan 42 Manajemen L
## 11 11 Kalam 25 Teknik Industri L
## 12 12 Lisa 24 Ilmu Komputer P
## 13 13 Mona 28 Bisnis P
## 14 14 Nanda 27 Manajemen L
## 15 15 Opan 27 Akuntansi L
## 16 16 Pendi 38 Teknik Informatika L
## 17 17 Qonita 23 Desain Visual P
## 18 18 Rafinah 26 Bisnis P
## 19 19 Sabrina 30 Statistika P
## 20 20 Tariq 26 Agribisnis L
## 21 21 Untung 41 Bisnis L
Mengurutkan data
Kita dapat mengurutkan DataFrame berdasarkan satu atau lebih kolom.
# Mengurutkan DataFrame berdasarkan 'usia'
student_df_sorted <- student_df[order(student_df$usia), ]
print(student_df_sorted)
## id nama usia jurusan jkel
## 17 17 Qonita 23 Desain Visual P
## 7 7 Guruh 24 Statistika L
## 12 12 Lisa 24 Ilmu Komputer P
## 1 1 Ari 25 Teknik Informatika L
## 11 11 Kalam 25 Teknik Industri L
## 18 18 Rafinah 26 Bisnis P
## 20 20 Tariq 26 Agribisnis L
## 9 9 Irene 27 Akuntansi P
## 14 14 Nanda 27 Manajemen L
## 15 15 Opan 27 Akuntansi L
## 6 6 Farhan 28 Manajemen L
## 13 13 Mona 28 Bisnis P
## 5 5 Eko 30 Statistika L
## 19 19 Sabrina 30 Statistika P
## 2 2 Budi 31 Manajemen L
## 8 8 Hadi 34 Manajemen L
## 3 3 Citra 35 Akuntansi P
## 16 16 Pendi 38 Teknik Informatika L
## 4 4 David 40 Ilmu Komputer L
## 21 21 Untung 41 Bisnis L
## 10 10 Johan 42 Manajemen L
Menggabungkan data
Kita bisa gunakan fungsi rbind() atau
merge() untuk menggabungkan dua data frame, tergantung
kondisinya. Jika data frame yang satu dengan yang lain kolomnya sama
(hanya ingin digabung setelah baris terakhir data frame pertama),
gunakan rbind(). Namun, jika kolomnya ada yang tidak sama,
kita bisa gunakan merge().
# data frame kedua
second_student_df <- data.frame(
id = c(22, 23, 24, 25, 26),
nama = c("Vera", "Wanda", "Xaviera", "Yudi", "Zahid"),
usia = c(25, 33, 27, 38, 24),
jurusan = c("Ilmu Komputer", "Bisnis", "Desain Visual", "Teknik Industri", "Hubungan Internasional"),
jkel = c("P", "P", "P", "L", "L")
)
# Karena kolomnya sama, kita gunakan rbind()
student_df_merged <- rbind(student_df, second_student_df)
print(student_df_merged)
## id nama usia jurusan jkel
## 1 1 Ari 25 Teknik Informatika L
## 2 2 Budi 31 Manajemen L
## 3 3 Citra 35 Akuntansi P
## 4 4 David 40 Ilmu Komputer L
## 5 5 Eko 30 Statistika L
## 6 6 Farhan 28 Manajemen L
## 7 7 Guruh 24 Statistika L
## 8 8 Hadi 34 Manajemen L
## 9 9 Irene 27 Akuntansi P
## 10 10 Johan 42 Manajemen L
## 11 11 Kalam 25 Teknik Industri L
## 12 12 Lisa 24 Ilmu Komputer P
## 13 13 Mona 28 Bisnis P
## 14 14 Nanda 27 Manajemen L
## 15 15 Opan 27 Akuntansi L
## 16 16 Pendi 38 Teknik Informatika L
## 17 17 Qonita 23 Desain Visual P
## 18 18 Rafinah 26 Bisnis P
## 19 19 Sabrina 30 Statistika P
## 20 20 Tariq 26 Agribisnis L
## 21 21 Untung 41 Bisnis L
## 22 22 Vera 25 Ilmu Komputer P
## 23 23 Wanda 33 Bisnis P
## 24 24 Xaviera 27 Desain Visual P
## 25 25 Yudi 38 Teknik Industri L
## 26 26 Zahid 24 Hubungan Internasional L
# data frame ketiga
third_student_df <- data.frame(
id = 1:26,
ipk = round(runif(26, min = 3.00, max = 4.00), 2)
)
# Karena kolomnya berbeda dengan id sebagai key yang sama dengan student_df, kita gunakan merge()
student_df_final <- merge(student_df_merged, third_student_df, by = "id", all = TRUE)
print(student_df_final)
## id nama usia jurusan jkel ipk
## 1 1 Ari 25 Teknik Informatika L 3.16
## 2 2 Budi 31 Manajemen L 4.00
## 3 3 Citra 35 Akuntansi P 3.45
## 4 4 David 40 Ilmu Komputer L 3.17
## 5 5 Eko 30 Statistika L 3.08
## 6 6 Farhan 28 Manajemen L 3.33
## 7 7 Guruh 24 Statistika L 3.89
## 8 8 Hadi 34 Manajemen L 3.17
## 9 9 Irene 27 Akuntansi P 3.65
## 10 10 Johan 42 Manajemen L 3.80
## 11 11 Kalam 25 Teknik Industri L 3.05
## 12 12 Lisa 24 Ilmu Komputer P 3.24
## 13 13 Mona 28 Bisnis P 3.52
## 14 14 Nanda 27 Manajemen L 3.13
## 15 15 Opan 27 Akuntansi L 3.74
## 16 16 Pendi 38 Teknik Informatika L 3.39
## 17 17 Qonita 23 Desain Visual P 3.95
## 18 18 Rafinah 26 Bisnis P 3.81
## 19 19 Sabrina 30 Statistika P 3.34
## 20 20 Tariq 26 Agribisnis L 3.40
## 21 21 Untung 41 Bisnis L 3.09
## 22 22 Vera 25 Ilmu Komputer P 3.58
## 23 23 Wanda 33 Bisnis P 3.91
## 24 24 Xaviera 27 Desain Visual P 3.54
## 25 25 Yudi 38 Teknik Industri L 3.86
## 26 26 Zahid 24 Hubungan Internasional L 3.55
Aggregasi data
Kita bisa melakukan aggregasi dengan menggunakan
aggregate() atau tapply().
# Menghitung rata-rata usia berdasarkan jenis kelamin
student_agregat <- aggregate(usia ~ jkel, data = student_df_final, mean)
print(student_agregat)
## jkel usia
## 1 L 31.25
## 2 P 27.80
Berikut ini adalah beberapa fungsi yang sering digunakan saat bekerja dengan dataframe.
# head(df): Menampilkan beberapa baris pertama dari DataFrame
head(student_df_final)
## id nama usia jurusan jkel ipk
## 1 1 Ari 25 Teknik Informatika L 3.16
## 2 2 Budi 31 Manajemen L 4.00
## 3 3 Citra 35 Akuntansi P 3.45
## 4 4 David 40 Ilmu Komputer L 3.17
## 5 5 Eko 30 Statistika L 3.08
## 6 6 Farhan 28 Manajemen L 3.33
# tail(df): Menampilkan beberapa baris terakhir dari DataFrame
tail(student_df_final)
## id nama usia jurusan jkel ipk
## 21 21 Untung 41 Bisnis L 3.09
## 22 22 Vera 25 Ilmu Komputer P 3.58
## 23 23 Wanda 33 Bisnis P 3.91
## 24 24 Xaviera 27 Desain Visual P 3.54
## 25 25 Yudi 38 Teknik Industri L 3.86
## 26 26 Zahid 24 Hubungan Internasional L 3.55
# dim(df): Mengembalikan dimensi (jumlah baris dan kolom) dari DataFrame
dim(student_df_final)
## [1] 26 6
# str(df): Menampilkan struktur DataFrame
str(student_df_final)
## 'data.frame': 26 obs. of 6 variables:
## $ id : num 1 2 3 4 5 6 7 8 9 10 ...
## $ nama : chr "Ari" "Budi" "Citra" "David" ...
## $ usia : num 25 31 35 40 30 28 24 34 27 42 ...
## $ jurusan: chr "Teknik Informatika" "Manajemen" "Akuntansi" "Ilmu Komputer" ...
## $ jkel : chr "L" "L" "P" "L" ...
## $ ipk : num 3.16 4 3.45 3.17 3.08 3.33 3.89 3.17 3.65 3.8 ...
# summary(df): Menampilkan ringkasan statistik untuk setiap kolom dalam DataFrame
summary(student_df_final)
## id nama usia jurusan
## Min. : 1.00 Length:26 Min. :23.00 Length:26
## 1st Qu.: 7.25 Class :character 1st Qu.:25.25 Class :character
## Median :13.50 Mode :character Median :27.50 Mode :character
## Mean :13.50 Mean :29.92
## 3rd Qu.:19.75 3rd Qu.:33.75
## Max. :26.00 Max. :42.00
## jkel ipk
## Length:26 Min. :3.050
## Class :character 1st Qu.:3.188
## Mode :character Median :3.485
## Mean :3.492
## 3rd Qu.:3.785
## Max. :4.000
# names(df): Menampilkan nama-nama kolom dalam DataFrame
names(student_df_final)
## [1] "id" "nama" "usia" "jurusan" "jkel" "ipk"
# nrow(df): Mengembalikan jumlah baris dalam DataFrame
nrow(student_df_final)
## [1] 26
# ncol(df): Mengembalikan jumlah kolom dalam DataFrame
ncol(student_df_final)
## [1] 6
Matrices atau matriks adalah susunan persegi panjang dari bilangan-bilangan dalam bentuk baris dan kolom. Matriks digunakan untuk menggabungkan vektor dengan tipe yang sama, yang bisa berupa numerik, karakter, atau logis.
Untuk membuat matriks di R, kita bisa gunakan
matrix().
# Membuat matriks dari vektor 1 sampai 9, dengan 3 baris dan 3 kolom
mat <- matrix(1:9, nrow = 3, ncol = 3)
print(mat)
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
Kita juga bisa menggunakan cbind() atau
rbind() 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_mat <- cbind(col1, col2, col3)
my_mat
## col1 col2 col3
## [1,] 5 2 7
## [2,] 6 4 3
## [3,] 7 5 4
## [4,] 8 9 8
## [5,] 9 8 7
Pengisian matriks apabila menggunakan matrix() bisa juga
dilakukan secara baris dengan menambahkan parameter
byrow = TRUE.
# Membuat matriks yang diisi secara baris
mat <- matrix(1:9, nrow = 3, ncol = 3, byrow = TRUE)
print(mat)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
Selain itu, kita juga bisa membuat matriks dengan mengkonversi vektor
atau list menjadi matriks dengan menetapkan dimensi menggunakan
dim().
# Membuat matriks dari vektor
vec <- 1:6
dim(vec) <- c(2, 3)
print(vec)
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
Untuk mengakses elemen di dalam matriks, kita bisa menggunakan beberapa cara, seperti.
Akses elemen tunggal
Kita mengakses elemen tunggal dalam matriks dengan menggunakan indeks baris dan kolom.
# Mengakses elemen di baris 2, kolom 3
elemen_tunggal <- mat[2, 3]
print(elemen_tunggal)
## [1] 6
Akses seluruh baris atau kolom
Kita dapat mengakses seluruh baris atau kolom dengan meninggalkan indeks yang lain kosong.
# akses seluruh baris kedua
elemen_baris_kedua <- mat[2, ]
print(elemen_baris_kedua)
## [1] 4 5 6
# akses seluruh kolom kedua
elemen_kolom_kedua <- mat[, 2]
print(elemen_kolom_kedua)
## [1] 2 5 8
Untuk mengubah elemen di dalam matriks, caranya tidak jauh berbeda dengan stuktur data yang sebelumnya dibahas.
# Mengubah elemen di baris pertama, kolom kedua
mat[1, 2] <- 10
print(mat)
## [,1] [,2] [,3]
## [1,] 1 10 3
## [2,] 4 5 6
## [3,] 7 8 9
# Mengubah seluruh baris kedua
mat[2, ] <- c(11, 12, 13)
print(mat)
## [,1] [,2] [,3]
## [1,] 1 10 3
## [2,] 11 12 13
## [3,] 7 8 9
Penjumlahan dan pengurangan matriks
Penjumlahan dan pengurangan antara dua matriks syaratnya adalah ukuran matriks sama.
# Matriks lain
matriks1 <- matrix(9:1, nrow = 3)
matriks2 <- matrix(1:9, nrow = 3, byrow = TRUE)
print(matriks1)
## [,1] [,2] [,3]
## [1,] 9 6 3
## [2,] 8 5 2
## [3,] 7 4 1
print(matriks2)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
# Penjumlahan matriks
matriks_penjumlahan <- matriks1 + matriks2
print(matriks_penjumlahan)
## [,1] [,2] [,3]
## [1,] 10 8 6
## [2,] 12 10 8
## [3,] 14 12 10
# Pengurangan matriks
matriks_pengurangan <- matriks1 - matriks2
print(matriks_pengurangan)
## [,1] [,2] [,3]
## [1,] 8 4 0
## [2,] 4 0 -4
## [3,] 0 -4 -8
Perkalian matriks
Perkalian elemen-elemen dalam matriks dapat dilakukan dengan
menggunakan operator *, sedangkan perkalian matriks secara
matematika (dot product) dilakukan dengan %*%.
# Perkalian matriks
matriks_perkalian <- matriks1 * matriks2
print(matriks_perkalian)
## [,1] [,2] [,3]
## [1,] 9 12 9
## [2,] 32 25 12
## [3,] 49 32 9
# Perkalian matriks secara matematis dengan dot product
matriks_dot_product <- matriks1 %*% matriks2
print(matriks_dot_product)
## [,1] [,2] [,3]
## [1,] 54 72 90
## [2,] 42 57 72
## [3,] 30 42 54
Transpose matriks
Transpose dari matriks (menukar baris menjadi kolom dan sebaliknya)
dilakukan dengan fungsi t().
# Transpose matriks
matriks_transpose <- t(matriks_dot_product)
print(matriks_transpose)
## [,1] [,2] [,3]
## [1,] 54 42 30
## [2,] 72 57 42
## [3,] 90 72 54
Determinan matriks
Kita dapat menghitung determinan dari matriks persegi dengan fungsi
det().
# Matriks 3x3
det_matriks_perkalian <- det(matriks_perkalian)
print(det_matriks_perkalian)
## [1] 360
# Matriks 2x2
matriks <- matrix(c(4,2,3,1), nrow = 2)
print(matriks)
## [,1] [,2]
## [1,] 4 3
## [2,] 2 1
det_matriks <- det(matriks)
print(det_matriks)
## [1] -2
Inverse matriks
Invers dari matriks persegi dapat dihitung dengan fungsi
solve().
# Matriks 3x3
inv_matriks_perkalian <- solve(matriks_perkalian)
print(inv_matriks_perkalian)
## [,1] [,2] [,3]
## [1,] -0.4416667 0.5000000 -0.2250000
## [2,] 0.8333333 -1.0000000 0.5000000
## [3,] -0.5583333 0.8333333 -0.4416667
# Matriks 2x2
inv_matriks <- solve(matriks)
print(inv_matriks)
## [,1] [,2]
## [1,] -0.5 1.5
## [2,] 1.0 -2.0
Array adalah struktur data yang memungkinkan penyimpanan data dalam
beberapa dimensi. Setiap elemen dalam array harus memiliki tipe data
yang sama, seperti pada vektor dan matriks. Untuk membuat array, kita
gunakan fungsi array() dengan menentukan dimensi yang
diinginkan.
# Membuat array 3x3x2 -> 3 baris, 3 kolom, dengan 2 lapisan
contoh_array <- array(1:18, dim = c(3, 3, 2))
print(contoh_array)
## , , 1
##
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] 10 13 16
## [2,] 11 14 17
## [3,] 12 15 18
# Membuat array 2x2x2x2 -> 2 baris, 2 kolom, 2 lapisan, dan 2 volume
array_berdimensi <- array(1:16, dim = c(2, 2, 2, 2))
print(array_berdimensi)
## , , 1, 1
##
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
##
## , , 2, 1
##
## [,1] [,2]
## [1,] 5 7
## [2,] 6 8
##
## , , 1, 2
##
## [,1] [,2]
## [1,] 9 11
## [2,] 10 12
##
## , , 2, 2
##
## [,1] [,2]
## [1,] 13 15
## [2,] 14 16
Untuk mengakses elemen dalam array, kita bisa mengakses elemen dalam array dimana melibatkan penggunaan indeks untuk setiap dimensi. Ada beberapa cara:
Akses elemen tunggal
array_berdimensi <- array(1:16, dim = c(2, 2, 2, 2))
# Mengakses elemen di baris 1, kolom 2, lapisan 2
array_elemen <- array_berdimensi[1, 2, 1, 2]
print(array_elemen)
## [1] 11
Akses Subset dari array
# Mengakses seluruh baris pertama di lapisan pertama
subset_array_berdimensi <- array_berdimensi[1, , 1, ]
print(subset_array_berdimensi)
## [,1] [,2]
## [1,] 1 9
## [2,] 3 11
Untuk mengubah elemen dalam array, caranya tidak begitu berbeda dengan struktur data sebelum-sebelumnya dengan melakukan assignment.
# Mengubah elemen di baris 1, kolom 2, lapisan 2, volume 2
array_berdimensi[1, 2, 2, 2] <- 99
print(array_berdimensi)
## , , 1, 1
##
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
##
## , , 2, 1
##
## [,1] [,2]
## [1,] 5 7
## [2,] 6 8
##
## , , 1, 2
##
## [,1] [,2]
## [1,] 9 11
## [2,] 10 12
##
## , , 2, 2
##
## [,1] [,2]
## [1,] 13 99
## [2,] 14 16
Beberapa operasi yang umum dilakukan pada array mirip dengan operasi pada matriks. Array dengan dimensi yang sama dapat dijumlahkan atau dikurangkan elemen demi elemen.
# Array kedua
array_kedua <- array(1:16, dim = c(2, 2, 2, 2))
# Penjumlahan array
array_hasil_penjumlahan <- array_berdimensi + array_kedua
print(array_hasil_penjumlahan)
## , , 1, 1
##
## [,1] [,2]
## [1,] 2 6
## [2,] 4 8
##
## , , 2, 1
##
## [,1] [,2]
## [1,] 10 14
## [2,] 12 16
##
## , , 1, 2
##
## [,1] [,2]
## [1,] 18 22
## [2,] 20 24
##
## , , 2, 2
##
## [,1] [,2]
## [1,] 26 114
## [2,] 28 32
# Pengurangan array
array_hasil_pengurangan <- array_berdimensi - array_kedua
print(array_hasil_pengurangan)
## , , 1, 1
##
## [,1] [,2]
## [1,] 0 0
## [2,] 0 0
##
## , , 2, 1
##
## [,1] [,2]
## [1,] 0 0
## [2,] 0 0
##
## , , 1, 2
##
## [,1] [,2]
## [1,] 0 0
## [2,] 0 0
##
## , , 2, 2
##
## [,1] [,2]
## [1,] 0 84
## [2,] 0 0
# Perkalian array
array_hasil_perkalian <- array_berdimensi * array_kedua
print(array_hasil_perkalian)
## , , 1, 1
##
## [,1] [,2]
## [1,] 1 9
## [2,] 4 16
##
## , , 2, 1
##
## [,1] [,2]
## [1,] 25 49
## [2,] 36 64
##
## , , 1, 2
##
## [,1] [,2]
## [1,] 81 121
## [2,] 100 144
##
## , , 2, 2
##
## [,1] [,2]
## [1,] 169 1485
## [2,] 196 256
Selain itu, kita bisa juga mengetahui dimensi dari array dengan
menggunakan dim().
dimensi_array <- dim(array_berdimensi)
print(dimensi_array)
## [1] 2 2 2 2
Kita juga bisa mengonversi array ke matriks, vektor, atau list sesuai kebutuhan.
Array ke Matriks
Jika array memiliki dua dimensi, kita bisa mengonversinya langsung ke matriks.
# Mengambil matriks dari array
matriks_array <- array_berdimensi[ , , 1, 1]
print(matriks_array)
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
Array ke Vektor
Kita dapat mengonversi seluruh array menjadi vektor dengan
menggunakan as.vector().
# Konversi array ke vektor
vektor_array <- as.vector(array_berdimensi)
print(vektor_array)
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 99 16
Factor adalah vektor yang menyimpan data kategoris, yang dapat berupa
data teks atau angka. Namun, berbeda dengan vektor karakter biasa,
faktor juga menyimpan informasi tentang kategori unik yang disebut
levels (tingkatan). Factors juga berguna untuk mengategorikan nilai unik
dalam kolom seperti “TRUE” atau “FALSE”, “MALE” atau “FEMALE”, dan lain
sebagainya. Salah satu struktur data pada R ini berguna dalam analisis
data untuk pemodelan statistik. Untuk membuat faktor, kita bisa gunakan
factor().
# Membuat faktor dari vektor karakter
sex <- factor(c("Male", "Female", "Female", "Male", "Female"))
print(sex)
## [1] Male Female Female Male Female
## Levels: Female Male
# Membuat faktor dengan level tertentu
education <- factor(
c("SMA", "Sarjana", "Magister", "Sarjana", "Doktoral", "SMA", "Magister"),
levels = c("SMA", "Sarjana", "Magister", "Doktoral"),
ordered = TRUE
)
print(education)
## [1] SMA Sarjana Magister Sarjana Doktoral SMA Magister
## Levels: SMA < Sarjana < Magister < Doktoral
levels menentukan urutan level sedangkan
ordered = TRUE menunjukkan bahwa faktor ini memiliki urutan
tingkatan tertentu, yang berguna untuk analisis yang melibatkan urutan
(misalnya, analisis ordinal).
Untuk mengakses levels dari factor, kita bisa gunakan fungsi
levels(). Kita bisa juga mengganti nama level dalam
faktor.
levels(sex)
## [1] "Female" "Male"
levels(education)
## [1] "SMA" "Sarjana" "Magister" "Doktoral"
# mengubah nama level
levels(sex) <- c("F", "M")
print(sex)
## [1] M F F M F
## Levels: F M
Kita juga bisa menambah atau mengurangi level dengan menggunakan
fungsi levels().
# menambah level baru tanpa mengubah data
levels(education) <- c("SD","SMP", "SMA", "Sarjana", "Magister", "Doktoral")
print(education)
## [1] SD SMP SMA SMP Sarjana SD SMA
## Levels: SD < SMP < SMA < Sarjana < Magister < Doktoral
# mengurangi level yang tidak digunakan
education <- factor(education, levels = c("SD","SMP", "SMA"))
print(education)
## [1] SD SMP SMA SMP <NA> SD SMA
## Levels: SD < SMP < SMA
Faktor sangat berguna dalam analisis data, terutama dalam model statistik seperti regresi. Misalnya, jika kita ingin menggunakan faktor sebagai variabel prediktor dalam regresi linear.
# Dataset contoh
dataset <- data.frame(
tinggi = c(170, 155, 165, 190, 180, 175, 185),
jkel = factor(c("L", "P", "P", "L", "P", "L", "L"))
)
# Model regresi linear
model <- lm(tinggi ~ jkel, data = dataset)
summary(model)
##
## Call:
## lm(formula = tinggi ~ jkel, data = dataset)
##
## Residuals:
## 1 2 3 4 5 6 7
## -10.000 -11.667 -1.667 10.000 13.333 -5.000 5.000
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 180.000 5.323 33.82 4.25e-07 ***
## jkelP -13.333 8.131 -1.64 0.162
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.65 on 5 degrees of freedom
## Multiple R-squared: 0.3497, Adjusted R-squared: 0.2197
## F-statistic: 2.689 on 1 and 5 DF, p-value: 0.162
Jika kita lihat hasil summary dari model regresi tersebut,
jkelP (jenis kelamin Perempuan) adalah koefisien yang
menunjukkan perbedaan dalam tinggi badan antara laki-laki dan
perempuan.
Selain itu, kita juga bisa menggunakan faktor untuk mengelompokkan data ke dalam berbagai fungsi statistik.
# Rata-rata tinggi berdasarkan jenis kelamin
mean_height <- tapply(dataset$tinggi, dataset$jkel, mean)
print(mean_height)
## L P
## 180.0000 166.6667
Untuk konversi ke tipe data lain, factor juga memfasilitasi untuk
beberapa konversi, seperti karakter dan numerik. Untuk mengonversi
faktor menjadi vektor karakter, kita bisa menggunakan
as.character() sedangkan untuk numerik, kita bisa
menggunakan as.numeric(). Namun, untuk numerik, konversi
faktor berdasarkan posisi, bukan nilai asli.
# Konversi faktor ke karakter
sex_char <- as.character(sex)
print(sex_char)
## [1] "M" "F" "F" "M" "F"
# Konversi faktor ke numerik
sex_num <- as.numeric(sex)
print(sex_num)
## [1] 2 1 1 2 1