Matriks
Di dalam subbab ini, Anda akan bekerja dengan matriks-matriks di R. Secara spesifik, Anda akan belajar bagaimana membuat matriks dan melakukan perhitungan-perhitungan sederhana terhadap matriks tersebut. Untuk melakukannya, Anda akan menganalisis pendapatan dari pemutaran sekuel film The Matrix!
Selayang Pandang Tentang Matriks
Di R, matriks adalah kumpulan elemen-elemen yang memiliki jenis data sama (numerik, karakter, atau logika) dan disusun ke dalam baris dan kolom. Karena matriks hanya memiliki baris dan kolom, matriks berdimensi dua.
Kita dapat membuat matriks di R dengan fungsi matrix()
. Contoh penggunaannya adalah seperti berikut.
matrix(1:12, nrow = 4, byrow = TRUE)
Baris kode tersebut menghasilkan luaran seperti ini.
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12
Luaran tersebut menunjukkan apa makna argumen-argumen yang kita tuliskan di dalam fungsi matrix()
.
- Argumen pertamanya merupakan data yang, oleh R, akan disusun menjadi baris-baris dan kolom-kolom sebuah matriks. Di sini, kita menggunakan data
1:12
yang merupakan bentuk singkat daric(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
. - Argumen
nrow
menginformasikan R berapa baris yang seharusnya dibuat. Di contoh ini,nrow = 4
mengindikasikan bahwa matriks yang dibuat memiliki empat baris. - Argumen ketiga, yaitu
byrow
, mengindikasikan bahwa pengisian matriksnya dilakukan menurut baris-barisnya. Elemen-elemen data kita tersebut secara terurut diisikan ke baris pertama, kedua, dan demikian seterusnya. Jika kita ingin pengisiannya menurut kolom, kita dapat menggantinya menjadibyrow = FALSE
.
Sekarang, silakan kerjakan Latihan 1.21 berikut untuk berlatih membuat sebuah matriks.
Latihan 1.21
Buatlah sebuah matriks yang memiliki tiga baris dan memuat bilangan bulat mulai dari 1 sampai 9, serta pengisiannya menurut baris.
# no pec
# Buat sebuah matriks 3 baris dan berisi bilangan 1 sampai 9
# Buat sebuah matriks 3 baris dan berisi bilangan 1 sampai 9
matrix(1:9, nrow = 3, byrow = TRUE)
ex() %>% check_function("matrix") %>% {
check_arg(., 'data') %>% check_equal(incorrect_msg = "Apakah Anda sudah membuat matriksnya dengan benar? Cermati kembali perintah soalnya!")
check_arg(., 'byrow') %>% check_equal(incorrect_msg = "Apakah Anda sudah membuat matriksnya dengan benar? Cermati kembali perintah soalnya!")
check_arg(., 'nrow') %>% check_equal(incorrect_msg = "Apakah Anda sudah membuat matriksnya dengan benar? Cermati kembali perintah soalnya!")
}
ex() %>% check_output_expr("matrix(1:9, nrow=3, byrow=TRUE)",missing_msg = "Sepertinya ada masalah dengan pendefinisian matriksnya. Silakan periksa kembali perintah soalnya!")
success_msg("Awal yang hebat! Ayo semangat lanjut ke pembahasan berikutnya.")
matrix()
. Argumen-argumen yang perlu diisi adalah data
, nrow
, dan byrow
.Menganalisis Matriks
Sekarang saatnya Anda bekerja dengan data nyata! Di bagian ini, Anda akan diajak untuk menganalisis pendapatan sekuel film The Matrix dengan menggunakan matriks.
Pada editor dalam Latihan 1.22, Anda diberikan dua vektor. Masing-masing merepresentasikan pendapatan dua film pertama dari sekuel The Matrix (yaitu The Matrix dan The Matrix Reloaded). Elemen pertama dari tiap-tiap vektor tersebut menunjukkan pendapatan dari pemutaran di Amerika Serikat (AS) sedangkan elemen keduanya menunjukkan pendapatan dari pemutaran internasional (non-AS). Sumber datanya dari Wikipedia.
Di latihan tersebut, Anda perlu menyatukan semuanya ke dalam sebuah vektor dan menjadikannya sebagai sebuah matriks.
Latihan 1.22
- Gunakan
c(the_matrix, the_matrix_reloaded)
untuk menggabung dua vektor menjadi sebuah vektor. Namai hasilnya menjadibox_office
. - Buatlah sebuah matriks 3 baris sehingga tiap-tiap barisnya merepresentasikan sebuah film. Gunakan
matrix()
untuk melakukannya. Argumen pertamanya adalah vektorbox_office
yang memuat pendapatan semua filmnya. Berikutnya, aturlahnrow = 2
danbyrow = TRUE
. Namai hasilnya denganmatriks_the_matix
.
# no pec
# Pendapatan sekuel The Matrix (dalam jutaan dolar AS!)
the_matrix <- c(172.077, 295.146)
the_matrix_reloaded <- c(281.576, 460.271)
# Buatlah vektor box_office
box_office <-
# Buatlah matriks_the_matrix
matriks_the_matrix <-
# Pendapatan sekuel The Matrix (dalam jutaan dolar AS!)
the_matrix <- c(172.077, 295.146)
the_matrix_reloaded <- c(281.576, 460.271)
# Buatlah vektor box_office
box_office <- c(the_matrix, the_matrix_reloaded)
# Buatlah matriks_the_matrix
matriks_the_matrix <- matrix(box_office, nrow = 2, byrow = TRUE)
msg <- "Jangan mengganti apapun pada variabel film `the_matrix` dan `the_matrix_reloaded`!"
ex() %>% check_object("the_matrix", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("the_matrix_reloaded", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("box_office") %>% check_equal(incorrect_msg = "Apakah Anda sudah dengan benar menggabungkan `the_matrix` dan `the_matrix_reloaded` menjadi vektor `box_office`?")
ex() %>% check_function("matrix") %>% {
check_arg(., 'data') %>% check_equal(incorrect_msg = "Pastikan memasukkan argumen-argumen yang tepat untuk `matrix()`: `box_office`, `nrow = 2`, `by_row = TRUE`.")
check_arg(., 'nrow') %>% check_equal(incorrect_msg = "Pastikan memasukkan argumen-argumen yang tepat untuk `matrix()`: `box_office`, `nrow = 2`, `by_row = TRUE`.")
check_arg(., 'byrow') %>% check_equal(incorrect_msg = "Pastikan memasukkan argumen-argumen yang tepat untuk `matrix()`: `box_office`, `nrow = 2`, `by_row = TRUE`.")
}
ex() %>% check_object("matriks_the_matrix") %>% check_equal(incorrect_msg = "Apakah Anda sudah menggunakan hasil dari `matrix()` untuk membuat `matriks_the_matrix`?")
success_msg("Jempol! Ayo lanjutkan ke pembahasan berikutnya.")
box_office <- c(the_matrix, the_matrix_reloaded)
akan menggabungkan semua nilai dalam vektor-vektor tersebut menjadi sebuah vektor dengan 4 elemen. Kedua, matrix(box_office, nrow = ..., byrow = ...)
merupakan templat untuk perintah berikutnya.Menamai Sebuah Matriks
Agar kita mudah mengingat apa saja yang terdapat dalam matriks_the_matrix
, kita perlu memberikan nama baris-barisnya sebagai nama-nama film yang sesuai. Tak hanya memudahkan saja, penamaan tersebut juga bermanfaat ketika kita ingin memilih elemen-elemen matriks tersebut.
Serupa dengan vektor, kita dapat menamai baris dan kolom sebuah matriks. Templat perintah yang digunakan adalah seperti berikut.
rownames(matriks_ku) <- vektor_nama_baris
colnames(matriks_ku) <- vektor_nama_kolom
Di Latihan 1.23, saya telah menyiapkan dua vektor untuk Anda: judul
dan wilayah
. Anda akan memerlukan kedua vektor tersebut untuk menamai baris-baris dan kolom-kolom matriks_the_matrix
.
Latihan 1.23
- Gunakan
rownames()
untuk menamai baris-barismatriks_the_matrix
dengan vektor judul. - Gunakan
colnames()
untuk memberikan nama kolom-kolommatriks_the_matrix
dengan vektor wilayah. - Tampilkan
matriks_the_matrix
untuk melihat hasilnya.
# no pec
# Pendapatan sekuel The Matrix (dalam jutaan dolar AS!)
the_matrix <- c(172.077, 295.146)
the_matrix_reloaded <- c(281.576, 460.271)
# Membuat matriks
matriks_the_matrix <- matrix(c(the_matrix, the_matrix_reloaded), nrow = 2, byrow = TRUE)
# Vektor-vektor judul dan wilayah untuk penamaan
judul <- c("The Matrix", "The Matrix Reloaded")
wilayah <- c("AS", "non-AS")
# Namai baris-barisnya dengan judul
# Namai kolom-kolomya dengan wilayah
# Tampilkan matriks akhirnya
# Pendapatan sekuel The Matrix (dalam jutaan dolar AS!)
the_matrix <- c(172.077, 295.146)
the_matrix_reloaded <- c(281.576, 460.271)
# Membuat matriks
matriks_the_matrix <- matrix(c(the_matrix, the_matrix_reloaded), nrow = 2, byrow = TRUE)
# Vektor-vektor judul dan wilayah untuk penamaan
judul <- c("The Matrix", "The Matrix Reloaded")
wilayah <- c("AS", "non-AS")
# Namai baris-barisnya dengan judul
rownames(matriks_the_matrix) <- judul
# Namai kolom-kolomya dengan wilayah
colnames(matriks_the_matrix) <- wilayah
# Tampilkan matriks akhirnya
matriks_the_matrix
msg <- "Jangan mengganti apapun pada variabel film `the_matrix` dan `the_matrix_reloaded`!"
ex() %>% check_object("the_matrix", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("the_matrix_reloaded", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
msg <- "Jangan mengubah isi `matriks_the_matrix`; fokuslah pada baris-baris dan kolom-kolomnya!"
ex() %>% check_object("matriks_the_matrix") %>% check_equal(incorrect_msg = msg)
msg <- "Jangan mengganti apapun tentang vektor-vektor `judul` dan `wilayah` yang sudah didefinisikan untuk Anda."
ex() %>% check_object("judul", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("wilayah", undefined_msg = msg) %>% check_equal( incorrect_msg = msg)
ex() %>% check_object("matriks_the_matrix") %>% check_equal(eq_condition = "equal",incorrect_msg = "Apakah Anda sudah mengatur nama baris dan kolom `matriks_the_matrix` dengan benar? Gunakan `rownames(matriks_the_matrix) <- judul` untuk nama baris-barisnya; lakukan hal yang sama untuk kolom-kolomnya.")
ex() %>% check_output_expr("matriks_the_matrix", missing_msg = "Jangan lupa menampilkan `matriks_the_matrix` setelah Anda menamai baris-baris dan kolom-kolomnya.")
success_msg("Hebat! Silakan beranjak ke pembahasan berikutnya.")
rownames(matriks_the_matrix) <- judul
untuk menamai baris-baris matriks_the_matrix
. Lakukan hal yang sama untuk menamai kolom-kolomnya.Menghitung Pendapatan Total Setiap Film
Dari hasil latihan sebelumnya, kita mendapatkan matriks_the_matrix
seperti ini.
AS non-AS
The Matrix 172.077 295.146
The Matrix Reloaded 281.576 460.271
Bagaimana kita mengetahui pendapatan total setiap filmnya? Caranya adalah dengan menjumlahkan pendapatan dari pemutaran di AS dan non-AS untuk setiap filmnya. Dengan kata lain, kita perlu menjumlahkan semua nilai di setiap barisnya.
Di R, fungsi rowSums()
dapat digunakan untuk menentukan jumlah total setiap baris dari sebuah matriks. Fungsi ini menghasilkan sebuah vektor.
rowSums(matriks_ku)
Latihan 1.24
Hitunglah pendapatan total untuk kedua film dan jadikan hasilnya sebagai vektor pendapatan_total_film
.
# no pec
# Membuat matriks_the_matrix
box_office <- c(172.077, 295.146, 281.576, 460.271)
judul <- c("The Matrix", "The Matrix Reloaded")
wilayah <- c("AS", "non-AS")
matriks_the_matrix <- matrix(box_office, nrow = 2, byrow = TRUE, dimnames = list(judul, wilayah))
# Menghitung pendapatan total
pendapatan_total_film <-
# Membuat matriks_the_matrix
box_office <- c(172.077, 295.146, 281.576, 460.271)
judul <- c("The Matrix", "The Matrix Reloaded")
wilayah <- c("AS", "non-AS")
matriks_the_matrix <- matrix(box_office, nrow = 2, byrow = TRUE, dimnames = list(judul, wilayah))
# Menghitung pendapatan total
pendapatan_total_film <- rowSums(matriks_the_matrix)
msg <- "Jangan mengubah apapun dalam variabel-variabel `box_office` dan `matriks_the_matrix`!"
ex() %>% check_object("box_office", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("matriks_the_matrix", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("pendapatan_total_film") %>% check_equal(incorrect_msg = "Gunakan `rowSums()` terhadap `matriks_the_matrix` dan jadikan hasilnya sebagai `pendapatan_total_film`.")
success_msg("Bagus! Silakan lanjut ke pembahasan berikutnya.")
rowSums(matriks_the_matrix)
menjumlahkan semua nilai dalam setiap baris, sehingga dapat digunakan untuk menghitung pendapatan total kedua film.Menyisipkan Kolom
Di latihan sebelumnya, Anda telah membuat sebuah vektor pendapatan total untuk setiap film. Meskipun demikian, vektor tersebut belum menjadi bagian dari matriks_the_matrix
.
Kita dapat menggunakan fungsi cbind()
untuk menggabungkan sebuah matriks dengan vektor atau matriks lain, menurut kolomnya. Contohnya adalah seperti berikut.
matriks_besar <- cbind(matriks1, matriks2,
vektor1 ...)
Latihan 1.25
Sisipkan pendapatan_total_film
ke matriks_the_matrix
sebagai kolom baru. Buatlah hasilnya sebagai the_matrix_total
. Gunakan fungsi cbind()
.
# no pec
# Membuat matriks_the_matrix
box_office <- c(172.077, 295.146, 281.576, 460.271)
judul <- c("The Matrix", "The Matrix Reloaded")
wilayah <- c("AS", "non-AS")
matriks_the_matrix <- matrix(box_office, nrow = 2, byrow = TRUE, dimnames = list(judul, wilayah))
# Menghitung pendapatan total
pendapatan_total_film <- rowSums(matriks_the_matrix)
# Sisipkan kolom ke matriks_the_matrix
the_matrix_total <-
# Membuat matriks_the_matrix
box_office <- c(172.077, 295.146, 281.576, 460.271)
judul <- c("The Matrix", "The Matrix Reloaded")
wilayah <- c("AS", "non-AS")
matriks_the_matrix <- matrix(box_office, nrow = 2, byrow = TRUE, dimnames = list(judul, wilayah))
# Menghitung pendapatan total
pendapatan_total_film <- rowSums(matriks_the_matrix)
# Sisipkan kolom ke matriks_the_matrix
the_matrix_total <- cbind(matriks_the_matrix, pendapatan_total_film)
msg <- "Jangan mengubah apapun terhadap `box_office` dan `matriks_the_marix`!"
ex() %>% check_object("box_office", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("matriks_the_matrix", undefined_msg = msg) %>% check_equal(, incorrect_msg = msg)
ex() %>% check_object("pendapatan_total_film") %>% check_equal(incorrect_msg = "Jadikan hasil `rowSums(matriks_the_matrix)` sebagai `pendapatan_total_film`.")
msg <- "Apakah Anda sudah dengan benar menggunakan `cbind()` untuk menambahkan `pendapatan_total_film` kepada `matriks_the_matrix`? Anda harus menginputkan `matriks_the_matrix` dan `pendapatan_total_film` secara terurut ke dalam `cbind()`. Matriks yang dihasilkan, `the_matrix_total`, seharusnya berisi dua baris dan tiga kolom."
ex() %>% check_object("the_matriks_total") %>% check_equal(incorrect_msg = msg)
success_msg("Mantap! Setelah menambahkan kolom ke matriks, kita selanjutnya akan belajar bagaimana menambahkan baris. Ayo lanjut ke bagian berikutnya.")
cbind()
: matriks_the_matrix
dan pendapatan_total_film
, secara terurut. Jadikan hasilnya sebagai the_matrix_total
.Menyisipkan Baris
Sejauh ini, kita menggunakan dua judul film dari sekuel The Matrix. Padahal ketika tutorial ini ditulis, sekuel tersebut terdiri dari empat film. Dua film yang belum kita gunakan adalah The Matrix Revolutions dan The Matrix Resurrections. Oleh karena itu, kita akan menambahkan pendapatan yang dihasilkan oleh kedua film tersebut.
Untuk melakukannya, kita perlu menambahkan baris ke dalam matriks yang telah kita buat sebelumnya, matriks_the_matrix,
dengan pendapatan dua film berikutnya.
Di R, fungsi rbind()
bisa digunakan untuk menambahkan baris ke sebuah matriks. Contohnya adalah seperti ini.
rbind(matriks1, matriks2)
Editor dalam Latihan 1.26 telah memuat dua matriks, matriks_the_matrix
dan matriks_the_matrix2
, yang telah didefinisikan sebelumnya dan disediakan untuk Anda. Dengan demikian, Anda langsung dapat menggunakan kedua matriks tersebut. Berikut ini informasi mengenai kedua matriks tersebut.
matriks_the_matrix
adalah matriks yang telah kita buat dan gunakan sebelumnya.matriks_the_matrix2
berisi pendapatan yang dihasilkan dari dua film The Matrix berikutnya.
Anda dapat mengeksplorasi kedua matriks tersebut di dalam console agar dapat melihat elemen-elemennya dengan jelas.
Latihan 1.26
Gunakan rbind()
untuk menggabungkan matriks_the_matrix
dan matriks_the_matrix2
menurut barisnya, dengan urutan seperti itu. Jadikan hasilnya sebagai the_matrix_semua
.
# Membuat matriks_the_matrix
box_office <- c(172.077, 295.146, 281.576, 460.271)
judul <- c("The Matrix", "The Matrix Reloaded")
wilayah <- c("AS", "non-AS")
matriks_the_matrix <- matrix(box_office, nrow = 2, byrow = TRUE, dimnames = list(judul, wilayah))
# Membuat matriks_the_matrix2
box_office2 <- c(139.314, 288.03, 37.687, 119.611)
judul2 <- c("The Matrix Revolutions", "The Matrix Resurrections")
matriks_the_matrix2 <- matrix(box_office2, nrow = 2, byrow = TRUE, dimnames = list(judul2, wilayah))
# remove all except all_wars_matrix
rm(box_office)
rm(judul)
rm(wilayah)
rm(box_office2)
rm(judul2)
# matriks_the_matrix dan matriks_the_matrix2 telah tersedia
matriks_the_matrix
matriks_the_matrix2
# Gabung kedua matriks tersebut menurut barisnya
the_matrix_semua <-
# matriks_the_matrix dan matriks_the_matrix2 telah tersedia
matriks_the_matrix
matriks_the_matrix2
# Gabung kedua matriks tersebut menurut barisnya
the_matrix_semua <- rbind(matriks_the_matrix, matriks_the_matrix2)
msg = "Jangan menimpa (membuat kembali) variabel-variabel yang telah disediakan untuk Anda (`matriks_the_matrix` dan `matriks_the_matrix2`)."
ex() %>% check_object("matriks_the_matrix", undefined_msg = msg) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("matriks_the_matrix2", undefined_msg = msg) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("the_matrix_semua") %>% check_equal(incorrect_msg = "Apakah Anda menggunakan `rbind()` dengan benar untuk membuat `the_matrix_semua`? Fungsi `rbind()` secara terurut perlu dua argumen ini, `matriks_the_matrix` dan `matriks_the_matrix2`.")
success_msg("Luar biasa! Berikutnya kita akan belajar tentang fungsi `colSums()`. Ayo lanjutkan!")
rbind(matriks1, matriks2)
.Menghitung Pendapatan Total
Di bagian sebelumnya, Anda telah dapat menjumlahkan semua nilai yang terdapat di tiap-tiap baris dengan menggunakan rowSums()
. Apakah kita dapat menjumlahkan semua nilai dalam kolom? Bisa!
Kita dapat menjumlahkan semua nilai dalam kolom-kolom sebuah matriks dengan fungsi colSums()
. Fungsi ini akan kita gunakan untuk menghitung pendapatan total sekuel The Matrix dari AS dan non-AS.
Editor dalam Latihan 1.27 telah menyediakan matriks the_matrix_semua
untuk Anda. Silakan tikkan nama matriks ini untuk mengeksplorasinya.
Latihan 1.27
- Hitunglah pendapatan total untuk wilayah AS dan non-AS, kemudian jadikan hasilnya sebagai
pendapatan_total_wilayah
. Anda dapat menggunakan fungsicolSums()
. - Tampilkan
pendapatan_total_wilayah
untuk mencermati hasilnya.
# Membuat the_matriks_semua
box_office_semua <- c(172.077, 295.146, 281.576, 460.271, 139.314, 288.03, 37.687, 119.611)
judul_semua <- c("The Matrix", "The Matrix Reloaded", "The Matrix Revolutions", "The Matrix Resurrections")
wilayah <- c("AS", "non-AS")
the_matrix_semua <- matrix(box_office_semua, nrow = 4, byrow = TRUE, dimnames = list(judul_semua, wilayah))
# Hapus objek
rm(box_office_semua)
rm(judul_semua)
rm(wilayah)
# Matriks the_matrix_semua telah tersedia untuk Anda
the_matrix_semua
# Pendapatan total untuk AS dan non-AS
pendapatan_total_wilayah <-
# Tampilkan pendapatan_total_wilayah
# Matriks the_matrix_semua telah tersedia untuk Anda
the_matrix_semua
# Pendapatan total untuk AS dan non-AS
pendapatan_total_wilayah <- colSums(the_matrix_semua)
# Tampilkan pendapatan_total_wilayah
pendapatan_total_wilayah
msg = "Jangan mengganti isi dari `the_matrix_semua`! Itu telah disediakan untuk Anda."
ex() %>% check_object("the_matrix_semua", undefined_msg = msg) %>% check_equal(eq_condition = "equal", incorrect_msg = msg)
ex() %>% check_function("colSums") %>% check_arg('x') %>% check_equal(incorrect_msg = "Apakah Anda menggunakan fungsi `colSums()` terhadap `the_matrix_semua`?")
ex() %>% check_object("pendapatan_total_wilayah") %>% check_equal(incorrect_msg = "Apakah Anda dengan benar menjadikan hasil `colSums(the_matrix_semua)` sebagai `pendapatan_total_wilayah`?")
ex() %>% check_output_expr("pendapatan_total_wilayah", missing_msg = "Jangan lupa untuk menampilkan `pendapatan_total_wilayah`!")
success_msg("Bellissimo! Lanjut ke pembahasan berikutnya untuk belajar tentang pemilihan elemen-elemen matriks.")
colSums()
dengan argumen the_matrix_semua
untuk menghitung total pendapatan setiap wilayahnya.Pemilihan Elemen-Elemen Matriks
Seperti halnya vektor, kita juga dapat memilih elemen-elemen sebuah matriks dengan menggunakan tanda kurung siku [ ]
. Bedanya dengan vektor, matriks berdimensi dua sehingga kita perlu memberikan identitas baris dan kolom di dalam tanda kurung untuk memilih elemen-elemennya. Identitas baris dan kolom tersebut perlu ditulis secara terurut dan dipisahkan dengan tanda koma. Contohnya seperti ini.
matriks_ku[1, 2]
memilih elemen pada baris pertama dan kolom kedua.matriks_ku[1:3, 4:7]
menghasilkan sebuah matriks yang datanya merupakan data dari baris 1, 2, 3 dan kolom 4, 5, 6, 7 dalammatriks_ku
.
Jika Anda ingin memilih semua elemen dalam baris atau kolom dari suatu matriks, Anda tidak perlu menuliskan bilangan sebelum atau setelah tanda koma. Misalnya seperti ini.
matriks_ku[1, ]
memilih semua elemen dalam baris pertama.matriks_ku[ , 4:6]
memilih semua elemen dalam kolom keempat, kelima, dan keenam.
Nah, sekarang kita kembali ke data pendapatan sekuel film The Matrix, the_matrix_semua
. Matriks tersebut telah disiapkan dalam editor pada Latihan 1.28.
Latihan 1.28
- Pilihlah pendapatan dari wilayah non-AS untuk semua film (semua elemen kolom kedua dari
the_matrix_semua
), jadikan hasilnya sebagainon_as_semua
. - Gunakan fungsi
mean()
untuk menghitung rerata pendapatan dari wilayah non-AS untuk semua film. Tampilkan hasilnya. - Sekarang, pilihlah pendapatan dari wilayah non-AS hanya untuk dua film pertama dari
the_matrix_semua
. Simpan hasilnya sebagainon_as_beberapa
. - Gunakan
mean()
untuk menentukan rerata nilai-nilai dalamnon_as_beberapa
.
# Membuat the_matriks_semua
box_office_semua <- c(172.077, 295.146, 281.576, 460.271, 139.314, 288.03, 37.687, 119.611)
judul_semua <- c("The Matrix", "The Matrix Reloaded", "The Matrix Revolutions", "The Matrix Resurrections")
wilayah <- c("AS", "non-AS")
the_matrix_semua <- matrix(box_office_semua, nrow = 4, byrow = TRUE, dimnames = list(judul_semua, wilayah))
# Hapus objek
rm(box_office_semua)
rm(judul_semua)
rm(wilayah)
# Matriks the_matrix_semua telah tersedia untuk Anda
the_matrix_semua
# Pilih pendapatan non-AS untuk semua film
non_as_semua <-
# Rerata pendapatan non-AS
# Pilih pendapatan non-AS untuk dua film pertama
non_as_beberapa <-
# Rerata pendapatan non-AS untuk dua film pertama
# Matriks the_matrix_semua telah tersedia untuk Anda
the_matrix_semua
# Pilih pendapatan non-AS untuk semua film
non_as_semua <- the_matrix_semua[, 2]
# Rerata pendapatan non-AS
mean(non_as_semua)
# Pilih pendapatan non-AS untuk dua film pertama
non_as_beberapa <- the_matrix_semua[1:2, 2]
# Rerata pendapatan non-AS untuk dua film pertama
mean(non_as_beberapa)
msg = "Jangan mengganti isi dari `the_matrix_semua`. Matriks ini telah disediakan untuk Anda."
ex() %>% check_object("the_matrix_semua", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("non_as_semua") %>% check_equal(incorrect_msg = "Apakah Anda sudah memberikan semua nilai kolom kedua `the_matrix_semua` kepada `non_as_semua`? Anda dapat menggunakan `[, 2]` untuk melakukannya!")
ex() %>% check_output_expr("mean(non_as_semua)", missing_msg = "Apakah Anda sudah menghitung rerata `non_as_semua` dengan menggunakan `mean(non_as_semua)`? Tampilkan hasilnya.")
ex() %>% check_object("non_as_beberapa") %>% check_equal(incorrect_msg = "Apakah Anda sudah memberikan nilai-nilai baris pertama dan kedua dan kolom kedua `the_matrix_semua` kepada `non_as_beberapa`? Anda dapat menggunakan `[1:2, 2]` untuk melakukannya!")
ex() %>% check_output_expr("mean(non_as_beberapa)", missing_msg = "Apakah Anda sudah menghitung rerata `non_as_beberapa` dengan menggunakan `mean(non_as_beberapa)`? Tampilkan hasilnya.")
success_msg("Bagus! Lanjut ke pembelajaran berikutnya.")
matriks_ku
dengan matriks_ku[, 2]
Operasi Aritmetika pada Matriks
Kita dapat melakukan operasi-operasi aritmetika, seperti +
, -
, *
, dan /
, terhadap matriks. Misalnya, kita dapat mengalikan 2 dan semua elemen matriks_ku
dengan perintah 2 * matriks_ku
.
Kembali ke sekuel The Matrix. Dengan the_matrix_semua
kita dapat mengetahui pendapatan dari semua film dalam sekuel tersebut. Sekarang kita akan memperkirakan berapa banyak orang yang menontoh film-film tersebut. Dengan menganggap harga setiap tiketnya 5 dolar AS, banyak penontonnya (dalam jutaan) dapat ditentukan dengan membagi the_matrix_semua
dengan 5.
Latihan 1.29
- Carilah banyaknya penonton (dalam jutaan) dengan membagi
the_matrix_semua
dengan 5. Jadikan hasilnya sebagaipenonton
. - Tampilkan
penonton
agar dapat diamati nilai-nilainya.
# Membuat the_matriks_semua
box_office_semua <- c(172.077, 295.146, 281.576, 460.271, 139.314, 288.03, 37.687, 119.611)
judul_semua <- c("The Matrix", "The Matrix Reloaded", "The Matrix Revolutions", "The Matrix Resurrections")
wilayah <- c("AS", "non-AS")
the_matrix_semua <- matrix(box_office_semua, nrow = 4, byrow = TRUE, dimnames = list(judul_semua, wilayah))
# Hapus objek
rm(box_office_semua)
rm(judul_semua)
rm(wilayah)
# Matriks the_matrix_semua telah tersedia untuk Anda
the_matrix_semua
# Perkirakan banyaknya penonton (dalam jutaan)
penonton <-
# Tampilkan matriks penonton
# Matriks the_matrix_semua telah tersedia untuk Anda
the_matrix_semua
# Perkirakan banyaknya penonton (dalam jutaan)
penonton <- the_matrix_semua / 5
# Tampilkan matriks penonton
penonton
msg = "Jangan mengganti isi dari `the_matrix_semua`. Matriks ini telah disediakan untuk Anda."
ex() %>% check_object("the_matrix_semua", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("penonton") %>% check_equal(incorrect_msg = "Sepertinya matriks `penonton` masih kurang tepat. Bagilah `the_matrix_semua` dengan 5 dan simpan hasilnya sebagai matriks `penonton`.")
ex() %>% check_output_expr("penonton", missing_msg = "Jangan lupa untuk menampilkan `penonton` agar Anda bisa mencermatinya.")
success_msg("Hebat! Apa yang menarik perhatian Anda? Begitu banyak orang internasional, sekitar 92 juta, yang menonton The Matrix Reloaded! Silakan lanjut ke bagian berikutnya.")
/
.Di Latihan 1.29, kita mengasumsikan bahwa harga tiket setiap filmnya sama. Karena film-film tersebut dirilis pada waktu yang berbeda-beda, tentu harga tiketnya bisa berbeda-beda pula. Harga tiket dapat naik seiring berjalannya waktu.
Sekarang kita buat sebuah matriks harga_tiket
yang elemen-elemennya ditunjukkan seperti berikut.
AS non-AS
The Matrix 4.0 4.0
The Matrix Reloaded 4.5 4.5
The Matrix Revolutions 5.4 5.4
The Matrix Resurrections 6.0 6.0
Banyaknya penonton (dalam jutaan) dapat ditentukan dengan membagi the_matriks_semua
dengan harga_tiket
. Pembagian ini menghasilkan sebuah matriks yang elemen-elemennya merupakan hasil pembagian setiap elemen matriks pertama dengan elemen yang bersesuaian dari matriks kedua.
Latihan 1.30
- Perkirakan banyaknya penonton AS dan non-AS untuk semua film dengan membagi
the_matrix_semua
denganharga_tiket
. Buatlah hasilnya menjadi matrikspenonton_baru
. - Dari matriks
penonton_baru
, pilihlah semua elemen kolom kedua, yang merupakan banyak penonton internasional (non-AS). Simpan hasilnya menjadipenonton_baru_int
. - Hitunglah rerata banyaknya penonton internasional dan tampilkan hasilnya.
# Membuat the_matriks_semua dan harga_tiket
box_office_semua <- c(172.077, 295.146, 281.576, 460.271, 139.314, 288.03, 37.687, 119.611)
judul_semua <- c("The Matrix", "The Matrix Reloaded", "The Matrix Revolutions", "The Matrix Resurrections")
wilayah <- c("AS", "non-AS")
the_matrix_semua <- matrix(box_office_semua, nrow = 4, byrow = TRUE,
dimnames = list(judul_semua, wilayah))
harga_tiket <- matrix(c(4.0, 4.0, 4.5, 4.5, 5.4, 5.4, 6.0, 6.0),
nrow = 4, byrow = TRUE,
dimnames = list(judul_semua, wilayah))
# Hapus objek
rm(box_office_semua)
rm(judul_semua)
rm(wilayah)
# Matriks the_matrix_semua dan harga_tiket telah tersedia untuk Anda
the_matrix_semua
harga_tiket
# Perkirakan banyaknya penonton (dalam jutaan)
penonton_baru <-
# Penonton internasional (dalam jutaan)
penonton_baru_int <-
# Rerata banyak penonton internasional (dalam jutaan)
# Matriks the_matrix_semua dan harga_tiket telah tersedia untuk Anda
the_matrix_semua
harga_tiket
# Perkirakan banyaknya penonton (dalam jutaan)
penonton_baru <- the_matrix_semua / harga_tiket
# Penonton internasional (dalam jutaan)
penonton_baru_int <- penonton_baru[, 2]
# Rerata banyak penonton internasional (dalam jutaan)
mean(penonton_baru_int)
msg = "Jangan mengganti isi dari `the_matrix_semua`. Matriks ini telah disediakan untuk Anda."
ex() %>% check_object("the_matrix_semua", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("harga_tiket", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("penonton_baru") %>% check_equal(incorrect_msg = "Apakah Anda sudah membuat matriks `penonton_baru` secara akurat? Anda seharusnya membagi `the_matrix_semua` dengan `harga_tiket` untuk mendapatkannya.")
ex() %>% check_object("penonton_baru_int") %>% check_equal(incorrect_msg = "Untuk membuat `penonton_baru_int`, Anda seharusnya memilih kolom kedua `penonton_baru`. Anda dapat menggunakan `[,2]` untuk melakukannya!")
ex() %>% check_output_expr("mean(penonton_baru_int)", missing_msg = "Setelah Anda mendapatkan `penonton_baru_int`, Anda dapat menggunakan `mean()` Untuk menghitung rerata banyaknya penonton internasional. Pastikan untuk menampilkan hasilnya.")
success_msg("Luar biasa! Latihan ini adalah latihan terakhir di subbab matriks. Di pemberhentian berikutnya, kita akan belajar faktor!")
penonton_baru[, 2]
. - Rerata banyaknya penonton internasional dapat dihitung dengan fungsi mean()
.Anda telah mengetahui apa yang dilakukan operator pembagian /
terhadap dua matriks dalam Latihan 1.30. Bagaimana dengan operator perkalian *
?
Ketika kita menghitung matriks1 * matriks2
, kita akan mendapatkan sebuah matriks yang elemen-elemennya merupakan hasil kali setiap elemen matriks1
dengan elemen yang bersuaian dari matriks2
.
Bagi Anda yang sudah familier dengan perkalian matriks, tentuk hal tersebut bukan merupakan perkalian matriks yang standar. Untuk perkalian yang standar, R menggunakan operator %*%
.
Untuk lebih jelasnya, kita dapat menuliskan kode berikut untuk dijalankan R agar kita bisa membedakan operator *
dan %*%
.
matriks1 <- matrix(1:4, nrow = 2, byrow = TRUE)
matriks2 <- matrix(5:8, nrow = 2, byrow = TRUE)
matriks1 * matriks2
matriks1 %*% matriks2
Menurut Anda, bagaimana hasilnya? Silakan cermati hasil kedua operasi tersebut di bawah ini.
> matriks1 <- matrix(1:4, nrow = 2, byrow = TRUE)
> matriks1
[,1] [,2]
[1,] 1 2
[2,] 3 4
> matriks2 <- matrix(5:8, nrow = 2, byrow = TRUE)
> matriks2
[,1] [,2]
[1,] 5 6
[2,] 7 8
> matriks1 * matriks2
[,1] [,2]
[1,] 5 12
[2,] 21 32
> matriks1 %*% matriks2
[,1] [,2]
[1,] 19 22
[2,] 43 50