Bab 7 Vektor, Matriks, dan Dataframe

7.1 Tujuan Pembelajaran
CPMK 7
Mahasiswa mampu memahami tipe data vektor, matriks, dan dataframe dan menerapkannya untuk analisis data dalam R.
Sub-CPMK 7
Mahasiswa mampu menggunakan tipe data vektor, matriks, dan dataframe dan menganalisisnya dalam R.
Deskripsi Isi Bahan Ajar
Bab 7 ini membahas tentang:
- Vektor.
- Matriks.
- Dataframe.
Waktu Pembelajaran
Alokasi Waktu = 3 x 50 menit (3 SKS)
| Kegiatan | Alokasi Waktu |
|---|---|
| Ceramah dan Diskusi Interaktif | 20 menit |
| Praktik Vektor, Matriks, Dataframe | 50 menit |
| Konsultasi Praktik R | 50 menit |
| Presentasi individu | 30 menit |
Petunjuk Penggunaan Bahan Ajar
Langkah-langkah pembelajaran.
Pelajari struktur data vektor dan matriks untuk mengeksplorasi struktur data lanjut yaitu dataframe. Terapkan pengetahuan Anda pada contoh-contoh kasus yang telah disajikan secara individu kolaboratif. Konsultasikanlah kesulitan Anda selama praktik pada pengajar mata kuliah ini. Anda bisa bekerja dengan IDE RStudio secara offline maupun online.Sumber Belajar yang Dibutuhkan.
Laptop (Notebook), jaringan internet
Tujuan Akhir (Performance Objective)
Setelah menyelesaikan modul ini, mahasiswa mampu memahami struktur data vektor, matriks, dan dataframe dalam R.
7.2 Pendahuluan
Pada bab sebelumnya kita telah mempelajari struktur data array dan list. Kita telah bisa untuk membuat, memperbarui, menghapus isi data dari array dan list dengan fungsi bawaan R. Pada bab ini, kita akan mengeksplorasi struktur data yang akan sering digunakan untuk analisis data yaitu dataframe. Sebelum masuk ke dataframe, dasar mengenai struktur data vektor dan matriks akan kita perdalam kembali.
Dalam bahasa pemrograman apapun, kita memiliki variabel yang berbeda-beda untuk menyimpan data. Variabel disimpan dalam alokasi memori komputer dalam menyimpan nilai data. Hal ini juga berarti ketika kita membuat sebuah variabel, kita menggunakan sejumlah area di dalam memori penyimpanan. Struktur data adalah cara kita untuk mengelola data sehingga data bisa kita olah kembali secara efisien di dalam komputer.
Seperti yang pernah di jelaskan, R berbeda dengan bahasa pemrograman populer lainnya seperti C dan Java. Alasannya adalah R tidak perlu mendeklarasikan tipe data di awal pemrograman. Selain itu, variabel dinamakan dengan objek R, bentuk pengetahuan dari objek R menjadi tipe data dari variabel tersebut.
Terdapat beberapa jenis dari objek R. Yang paling digunakan antara lain:
- Vector
- Matrix
- Array
- List
- Dataframe
Kita ketahui bahwa variabel itu seperti segmen, dan sejauh ini, kita melihat bahwa segmen diisi dengan satu nilai. Bahkan ketika angka itu dibuat, hasil dari operasi matematika adalah satu nilai. Padahal variabel R dapat menyimpan lebih dari satu nilai (data). Bahkan variabel dapat menyimpan sejumlah besar struktur data yang berbeda. Untuk merealisasikan ini R memfasilitasi tipe data vektor (c), faktor, matriks (matrix), data frame (data.frame), dan list (list).
7.3 Vektor
Vektor adalah salah satu tipe data yang ada di dalam R. Dia menyimpan elemen data dengan tipe yang sama. Tipe data yang bisa disimpan dapat berupa Boolean (TRUE/ FALSE), integer, double, character, compex, atau raw. Sebuah tipe data vektor dapat diperiksa dengan fungsi bawaan typeof(). Sifat lain dari vektor juga adalah panjangnya. Panjang vektor adalah jumlah elemen data yang terkandung dalam vektor yang dapat dicari dengan fungsi length(). Vektor adalah objek data R yang paling dasar, dan terdapat empat tipe vektor atomik antara lain character, logical, numeric, dan integer.
Ketika kita hanya menulis suatu nilai di dalam R, ini adalah sebuah vektor dengan panjang 1 dan termasuk salah satu tipe vektor.
Membuat Vektor
Seperti yang pernah didiskusikan sebelumnya, vektor dapat dibuat dengan fungsi c(). Karena vektor harus memiliki elemen dari tipe data yang sama, fungsi c() akan mencoba dan memaksa (koersi) elemen yang dimasukkan memiliki tipe data yang sama jika ada yang berbeda. Urutan konversi data dari tipe data rendah ke tinggi dan dari logical ke integer ke double ke character.
Contoh:
## [1] "double"
## [1] 5
## [1] "character"
Vektor juga bisa dibuat dengan fungsi seq() dan operator :.
Fungsi seq() akan membuat urutan nilai dengan rentang yang telah ditetapkan dalam argumen “by”.
Contoh:
## [1] 0 2 4 6 8 10 12 14 16 18 20
Kita juga bisa menentukan panjang vektor yang dibuat dengan fungsi seq() dengan argumen “length.out”.
## [1] 0 4 8 12 16 20
Vektor juga dapat dibuat dengan operator :. Dengan operator ini, vektor akan membuat nilai yang kontinyu.
Contoh:
## [1] 1 2 3 4 5 6 7 8 9 10 11 12
Beberapa Tipe Vektor
Vektor adalah struktur data umum dan dasar di R dan merupakan tulang punggung R. Pada dasarnya, vektor hanyalah kumpulan nilai, terutama berupa angka.
Vektor Numerik
Contoh:
## [1] "double"
## [1] "integer"
Vektor Karakter
Contoh:
## [1] "character"
Vektor Logika
Contoh:
## [1] "logical"
Mengakses Elemen Vektor
Seperti yang pernah kita pelajari dalam Array dan List, kita menggunakan kurung tegak ([]) dalam mengakses elemen dari objek vektor. Indeks yang diisi dalam kurung tegak ini adalah lokasi elemen berada.
Contoh:
## [1] 99
7.4 Matriks
Matriks adalah struktur data dua dimensi dalam bahasa pemrograman R. Matriks mirip seperti vektor, perbedaanya adalah dalam hal atribut dimensi. Semua atribut dari objek R dapat diperiksa dengan fungsi attributes().
Contoh:
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
Kita dapat memberi nama baris dan kolom matriks dengan membuat “list” pada argumen “dimnames”.
Contoh:
## [1] "A" "B" "C"
## [1] "X" "Y" "Z"
## $dim
## [1] 3 3
##
## $dimnames
## $dimnames[[1]]
## [1] "X" "Y" "Z"
##
## $dimnames[[2]]
## [1] "A" "B" "C"
Kita juga bisa membuat matriks dengan fungsi cbind() dan rbind().
Contoh:
## [,1] [,2]
## [1,] 11 44
## [2,] 22 55
## [3,] 33 66
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
Mengakses Elemen Matriks
Kita bisa mengakses elemen matriks dengan kurung siku [] dan nilai indeks data yang ingin diakses. Elemen matriks dapat diakses dengan sintaks var[raw, column].
Contoh:
## B C
## X 4 7
## Y 5 8
Kita juga bisa mengakses elemen matriks dengan indexing.
## [1] 1 2 3 4
7.5 Dataframe
Dataframe adalah struktur array dua dimensi dimana setiap kolom bisa mengandung tipe data berbeda-beda, dan setiap baris berisi rekaman nilai data dari setiap kolom. Berikut ini adalah karakteristik dari dataframe.
- Nama kolom tidak boleh kosong.
- Nama baris harus unik (tidak ada yang sama).
- Data yang tersimpan dalam datafram harus numeric, factor, logical, atau character.
- Setiap kolom memiliki jumlah baris data yang sama.
Membuat Dataframe di R
Kita bisa membuat dataframe dengan vektor dan digabungkan dengan fungsi data.frame().
Contoh:
nama_siswa <- c("Amy", "Bob", "Chuck", "Daisy", "Ellie", "Frank", "George", "Helen")
umur <- c(27, 55, 34, 42, 20, 27, 34, 42)
gender <- c("F", "M", "M", "F", "F", "M", "M", "F")
ipk <- c(3.26, 3.75, 2.98, 3.40, 2.75, 3.32, 3.68, 3.97)
df_mahasiswa <- data.frame(nama_siswa, umur, gender, ipk)
df_mahasiswa## nama_siswa umur gender ipk
## 1 Amy 27 F 3.26
## 2 Bob 55 M 3.75
## 3 Chuck 34 M 2.98
## 4 Daisy 42 F 3.40
## 5 Ellie 20 F 2.75
## 6 Frank 27 M 3.32
## 7 George 34 M 3.68
## 8 Helen 42 F 3.97
Untuk memeriksa tipe objek apakah dataframe atau bukan bisa menggunakan fungsi class().
## [1] "data.frame"
Mengakses Elemen Dataframe
Sama seperti array dan matriks sebelumnya, kita bisa mengakses elemen dataframe dengan sintaks var[row,column]. Contohnya disini kita ingin menampilkan nama “Chuck” dari dataset df_mahasiswa.
Contoh:
Data nama “Chuck” terletak di baris ke- 3 dan kolom ke- 1
## [1] "Chuck"
Cara lain kita bisa mengakses kolom tertentu dengan “[]”, “[[]]”, atau dengan “$”. Misalnya disini kita ingin mengakses data “gender”.
Contoh:
## gender
## 1 F
## 2 M
## 3 M
## 4 F
## 5 F
## 6 M
## 7 M
## 8 F
## [1] "F" "M" "M" "F" "F" "M" "M" "F"
## [1] "F" "M" "M" "F" "F" "M" "M" "F"
Menggabungkan (Update) Dataframe
Kita bisa menggabungkan dataframe secara baris (vertikal) atau secara kolom (horizontal). Secara baris kita gunakan fungsi rbind() dan secara kolom kita gunakan fungsi cbind().
Contoh:
df1 <- data.frame (
Name = c("Juan", "Alcaraz"),
Age = c(22, 15)
)
df2 <- data.frame (
Name = c("Yiruma", "Bach"),
Age = c(46, 89)
)
df_updated <- rbind(df1, df2)
df_updated## Name Age
## 1 Juan 22
## 2 Alcaraz 15
## 3 Yiruma 46
## 4 Bach 89
Disini kita menggunakan fungsi rbind() untuk menggabungkan dua dataframe secara baris yaitu “df1” and “df2”.
Kemudian, kita akan melakukan penambahan dataframe secara kolom (menambahkan variabel data yang lain). Kita lakukan dengan fungsi cbind().
df1 <- data.frame (
Name = c("Juan", "Alcaraz"),
Age = c(22, 15)
)
df2 <- data.frame (
Hobby = c("Tennis", "Piano")
)
df_updated <- cbind(df1, df2)
df_updated## Name Age Hobby
## 1 Juan 22 Tennis
## 2 Alcaraz 15 Piano
Kita bisa mencari banyaknya kolom dari dataset kita dengan fungsi length().
Contoh:
## [1] 4
Untuk memeriksa struktur dari dataframe kita, gunakan fungsi str()
## 'data.frame': 8 obs. of 4 variables:
## $ nama_siswa: chr "Amy" "Bob" "Chuck" "Daisy" ...
## $ umur : num 27 55 34 42 20 27 34 42
## $ gender : chr "F" "M" "M" "F" ...
## $ ipk : num 3.26 3.75 2.98 3.4 2.75 3.32 3.68 3.97
7.6 Mengakses Sumber Dataset Sekunder
R menyediakan beberapa dataset bawaan yang bisa kita gunakan untuk eksplorasi pembelajaran. Dataset bawaan bisa kita panggil dengan menggunakan fungsi data().
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
## 'data.frame': 153 obs. of 6 variables:
## $ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ...
## $ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...
## $ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
## $ Temp : int 67 72 74 62 56 66 65 59 61 69 ...
## $ Month : int 5 5 5 5 5 5 5 5 5 5 ...
## $ Day : int 1 2 3 4 5 6 7 8 9 10 ...
Akan tetapi, dataset ini tidak terlalu bermanfaat bagi kita yang berkecimpung dalam penelitian pendidikan fisika. Salah satu dataset yang bisa kita eksplorasi adalah “spheredata” (Santoso et al., 2025). Dataset ini merupakan hasil pengukuran hasil belajar fisika siswa (kognitif, psikomotorik, dan afektif) di beberapa sekolah menengah atas. Untuk mengakses dataset ini kamu harus menginstall package “spheredata”. Installasinya sudah dijelaskan di bab 1.
Contoh:
Kita panggil library “spheredata” terlebih dahulu.
Untuk mengakses isi data dari package “spheredata” bisa kita gunakan tanda “::”

Untuk memanggil enam baris pertama dari dataset kita gunakan fungsi head()
## STUDID SCH COH GDR AGE FATHOCC MOTHOCC FATHEDU MOTHEDU FATHINC MOTHINC SIBL
## 1 A1001 1 1 1 3 1 9 4 5 7 12 2
## 2 A1002 1 1 2 1 4 8 4 4 10 12 2
## 3 A1003 1 1 1 2 4 8 3 4 2 12 0
## 4 A1004 1 1 2 3 1 1 2 2 6 6 3
## 5 A1005 1 1 1 2 1 1 3 3 10 10 2
## 6 A1006 1 1 2 2 1 7 4 2 9 4 2
## DOM
## 1 1
## 2 1
## 3 1
## 4 1
## 5 1
## 6 2
Untuk mencari dokumentasi dari dataset “demographic” ini kita buka tab “Help”. Kita bisa mengeksplorasi dataset lainnya misalnya data pengukuran pemahaman konsep Newtonian siswa seperti yang diukur oleh instrumen Force Concept Inventory (FCI) (Hestenes et al., 1992).
## FCI1 FCI2 FCI3 FCI4 FCI5 FCI6 FCI7 FCI8 FCI9 FCI10 FCI11 FCI12 FCI13 FCI14
## 1 C E B A E B B A B D C B C A
## 2 C D B E A C B E A D C B C B
## 3 D D C E C B B A E D B B B A
## 4 D D C E C A A E A E C C B A
## 5 D D E A D A E A A C A C C A
## 6 D A A E E B A A A A A E A B
## FCI15 FCI16 FCI17 FCI18 FCI19 FCI20 FCI21 FCI22 FCI23 FCI24 FCI25 FCI26 FCI27
## 1 C C A E E A B D C E B C E
## 2 C A B D D E C B A C C B B
## 3 C A B D D C B D A A A D C
## 4 C C D A B C B D B D D A C
## 5 D D A D E C D A D A B A A
## 6 D A A E D C A A A A A A A
## FCI28 FCI29 FCI30
## 1 D B E
## 2 E B E
## 3 C E B
## 4 D A B
## 5 B A B
## 6 B E C
Untuk kunci jawaban benar kamu bisa gunakan “FCIkey”. Bagaimana untuk melakukan pensekoran data FCI ini menurut data kunci jawaban tersebut? Eksplorasilah sebagai tugas project-based learning!
7.7 Tugas (Project-Based Learning)
Kerjakanlah tugas berikut secara individu dan presentasikan hasilnya di akhir pembelajaran!
Pelajarilah dataset lain yang terkandung dengan memperhatikan dokumentasi dari package “spheredata” (https://cran.r-project.org/web/packages/spheredata/spheredata.pdf)!
Lakukanlah pensekoran dataset FCI di atas! Berapakah nilai mean dan standar deviasi tiap sekolah dari data skor FCI? Carilah nilai mean dan standar deviasi tiap sekolah untuk dataset asesmen siswa lainnnya antara lain FMCE, FMCI, MWCS, RRMCS, TCE, SAAR, dan CLASS!
7.8 Rubrik Penilaian Pembelajaran
Nama Mahasiswa : NIM :
| Aspek | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| Aktivitas pemrograman | … | … | … | … |
| Kelancaran tugas | … | … | … | … |
| Kualitas pekerjaan | … | … | … | … |
| Keterbukaan masukan | … | … | … | … |
Definisi
- Aktivitas pemrograman mengukur keterlibatan mahasiswa dalam proses mengikuti pelajaran.
- Kelancaran tugas mengukur sejauh mana mahasiswa mampu mengikuti prosedur pemrograman yang telah dicontohkan dalam buku ini.
- Kualitas pekerjaan mengukur kemampuan mahasiswa dalam menggunakan komputernya untuk melakukan pemrograman dengan R.
- Keterbukaan masukan mengukur sejauh mana kualitas presentasi mahasiswa dan menerima masukan dan tanggapan dari temannya yang lain.
7.9 Penutup
Dalam bab ini, kita telah mempelajari salah satu tipe data yang sangat sering kita gunakan dalam proyek analisis data dengan R yaitu dataframe. Pada dasarnya, dataframe adalah sebuah tabel yang berisi baris dan kolom. Dataframe dapat disusun melalui kumpulan dari vektor yang berisi kumpulan nilai data tertentu. Suatu dataframe bisa menyimpan banyak variabel dengan tipe data yang berbeda-beda pada setiap kolomnya. Jika di masa depan kamu lupa materi ini, kamu bisa kembali ke halaman ini berulang-ulang kali. Karena hal pertama dalam sebuah proyek analisis data adalah mengakses sumber data yang mana sering kali berupa dataframe!