#belajarR-05: Data Structures in R Programming

Ziyadatul Hikmah
6 min readOct 9, 2023

--

Edited on canva.com by ©Ziyadatul Hikmah, image source from ©Myburgh Roux

Hallo, Guys!

Kembali lagi di chapter lanjutan #belajarR. Di chapter sebelumnya kita sudah mempelajari dasar-dasar bahasa pemrograman R. Untuk memperdalam pemahaman kita tentang data yang mostly nantinya banyak kita analisis di R, kita kali ini akan membahas terkait struktur data di R.

Let’s getting started!

Apa sih yang dimaksud struktur data di R?

Struktur data secara umum merupakan salah satu cara untuk mengatur data dalam komputer sehingga dapat digunakan secara efektif, sehingga dapat mengurangi kompleksitas ruang dan waktu dari berbagai tugas yang dijalankan di komputer. Sedangkan struktur data dalam pemrograman R adalah wadah untuk menyimpan banyak nilai.

Perlu kita ketahui, struktur data dasar di R sering kali disusun berdasarkan dimensinya (1D, 2D, atau nD). Apakah data tersebut homogen (elemennya memiliki tipe yang sama) atau heterogen (elemennya memiliki tipe yang berbeda-beda)?

Oleh karenanya, di R terdapat 6 jenis struktur data yang paling sering digunakan dalam analisis data, yaitu:

  • Vectors
  • Data frames
  • Lists
  • Matrices
  • Arrays
  • Factors

1. Vectors

Vektor adalah kumpulan data yang memiliki type yang sama. Untuk menggabungkan daftar item menjadi vektor, gunakan fungsi c() dan pisahkan data dengan koma.

Pada contoh di bawah ini, kita coba membuat variabel vektor dengan nama-nama provinsi di Indonesia, dengan menggabungkan beberapa type data teks/string:

nama_provinsi <- c("Jawa Barat", "Jawa Tengah","Jawa Timur",
"Jambi","Sumatera Utara")

Output:

[1] "Jawa Barat"     "Jawa Tengah"    "Jawa Timur"     "Jambi"         
[5] "Sumatera Utara"

Jika ingin membuat vektor dengan nilai numerik dalam suatu urutan tertentu, kita dapat menggunakan operator “:”

# Vector with numerical values in a sequence
angka <- 1:25

# Vector with numerical decimals in a sequence
angka_desimal <- 1.5:7.5

# Vector of logical values
logika_versi1 <- c(FALSE, TRUE, FALSE, TRUE)
logika_versi2 <- c(F, T, F, T)

Output:

[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
[1] 1.5 2.5 3.5 4.5 5.5 6.5 7.5
[1] FALSE TRUE FALSE TRUE
[1] FALSE TRUE FALSE TRUE

Apabila kita ingin mengetahui berapa banyak item yang ada dalam sebuah data vektor dapat menggunakan fungsi length().

length(nama_provinsi)

Output:

[1] 5

2. Data Frames

Data frame adalah table yang memiliki kolom dan baris. Jumlah dari elemen seluruh kolom dalam data frame tetap harus sama. Perhatikan contoh berikut ini!

# membuat variabel yang akan dibuat kolom dalam data frame
nomor <- 1:7
warna <- c("merah","jingga","kuning","hijau","biru","nila","ungu")

# membuat data frame
df <- data.frame(nomor, warna)

Output:

> df
nomor warna
1 1 merah
2 2 jingga
3 3 kuning
4 4 hijau
5 5 biru
6 6 nila
7 7 ungu

3. Lists

List merupakan kumpulan variable baik yang memiliki tipe data yang sama maupun berbeda, dimana data didalamnya dapat diurutkan dan dapat diubah.

Untuk membuat list di R, kita dapat menggunakan fungsi list(). Kita coba membuat sebuah list dari variabel yang sebelumnya telah kita buat. Data yang dihimpun dalam list meliputi data frame, strings, dan logika. Perhatikan contoh berikut!

# membuat struktur data list
m <- list(df, "analisis spasial lingkungan", logika_versi1)

Output:

> m
[[1]]
nomor warna
1 1 merah
2 2 jingga
3 3 kuning
4 4 hijau
5 5 biru
6 6 nila
7 7 ungu

[[2]]
[1] "analisis spasial lingkungan"

[[3]]
[1] FALSE TRUE FALSE TRUE

Nah, bagaimana jika kita ingin memeriksa tipe data yang terdapat dalam sebuah list?

class(m)

Output:

> class(m)
[1] "list"

Jika kita ingin mengakses salah satu elemen dari list, misalnya:

# untuk mengakses elemen ke 3 dari struktur list
m[[3]]

Output:

> m[[3]]
[1] FALSE TRUE FALSE TRUE

4. Matrices/Matrix

Matrix merupakan struktur data matematik yang mirip dengan data frame, namun seluruh kolom pada matrix harus berisi tipe data yang sama (numeric, character, atau boolean) dan harus memiliki panjang/length yang sama. Sehingga matrix dapat diartikan juga sebagai kumpulan data dua dimensi dengan kolom dan baris. Kolom adalah representasi vertikal dari data, sedangkan baris adalah representasi horizontal dari data.

Di R matrix dapat dibuat dengan fungsi matrix(). Yang perlu diperhatika ketika kita ingin membuat matrix di R adalah menentukan parameter nrow dan ncol untuk mendapatkan jumlah baris dan kolom.

# membuat matrix 
A <- matrix(1:15, nrow = 5)

# memeriksa dimensi variabel dalam matrix
dim(A)

Output:

> A
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 2 7 12
[3,] 3 8 13
[4,] 4 9 14
[5,] 5 10 15
> dim(A)
[1] 5 3

Untuk mengubah nama kolom dari data matrix,

# merubah nama kolom dari data matrix
colnames(A) <- c("satu", "dua","tiga")
colnames(A)

Output:

> A
satu dua tiga
[1,] 1 6 11
[2,] 2 7 12
[3,] 3 8 13
[4,] 4 9 14
[5,] 5 10 15

5. Arrays

Jika dibandingkan dengan struktur data matrix, array dapat memiliki lebih dari dua dimensi. Kita dapat menggunakan fungsi array() untuk membuat array di R dan parameter dim untuk menentukan dimensinya. Syntax untuk membuat sebuah array adalah sebagai berikut:

array[row position, column position, matrix level]

Contoh:

# membuat array dengan 1 dimensi 
x <- c(1:24)

# membuat array dengan dimensi lebih dari 1
multiarray <- array(x, dim = c(4, 3, 2))

Output:

> x
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

> multiarray
, , 1

[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12

, , 2

[,1] [,2] [,3]
[1,] 13 17 21
[2,] 14 18 22
[3,] 15 19 23
[4,] 16 20 24

Pada contoh di atas, kita telah membuat array dengan nilai 1 hingga 24.

Lalu apa maksud dari dim = c(4,3,2)?

  • Angka pertama dan kedua dalam tanda kurung menentukan jumlah baris dan kolom.
  • Angka terakhir dalam tanda kurung menentukan berapa banyak dimensi yang kita inginkan.

Note: Array hanya dapat memiliki satu tipe data.

Selain itu, kita juga dapat mengakses seluruh baris atau kolom dari sebuah matrix dengan menggunakan fungsi c() dimana:

  • Tanda koma (,) sebelum c() berarti kita ingin mengakses kolom.
  • Tanda koma (,) setelah c() berarti kita ingin mengakses baris.

Perhatikan contoh berikut ini!

# Mengakses semua nilai dari baris pertama (row) dari matriks pertama 
multiarray[c(1),,1]

# Mengakses semua item dari kolom pertama dari matriks satu
multiarray[,c(1),1]

Output:

> multiarray[c(1),,1]
[1] 1 5 9

> multiarray[,c(1),1]
[1] 1 2 3 4

6. Factors

Faktor merupakan salah satu jensi struktur data di R yang digunakan untuk mengkategorikan data dan menyimpannya sebagai level. Data faktor dapat menyimpan tipe data string dan bilangan bulat. Selain itu, struktur data faktor juga berguna untuk mengkategorikan nilai unik dalam kolom seperti “TRUE” atau “FALSE”, atau “MALE” atau “FEMALE”, dll.

Untuk membuat struktur data faktor di R, gunakan fungsi factor() dan tambahkan vektor sebagai argumen. Perhatikan contoh berikut ini!

# create a factor
genre_music <- factor(c("Jazz", "Rock", "Classic",
"Classic", "Pop", "Jazz",
"Rock", "Jazz"))

Pada contoh di atas, struktur data faktor yang terbentuk memiliki empat level (kategori), yaitu: Classic, Jazz, Pop, dan Rock.

Bagaimana cara kita untuk dapat mengetahui level-level dari data faktor? Cukup mudah, kita cukup gunakan fungsi levels()!

levels(genre_music)

Output:

> (genre_music)
[1] Jazz Rock Classic Classic Pop Jazz Rock Jazz
Levels: Classic Jazz Pop Rock

Gunakan fungsi length() untuk mengetahui berapa banyak item yang ada di dalam faktor:

length(genre_music)

Output:

> length(genre_music)
[1] 8

Jika ada pertanyaan terkait pembahasan chapter #belajarR-05, bisa kalian drop pertanyaannya di kolom komentar yah!

FYI, di chapter-chapter selanjutnya saya akan lanjutkan dengan topik R Packages, bagaimana cara untuk install dan load R Packages, kemudian cara-cara untuk importing berbagai jenis data ke R (csv, xls, vektor, dan raster). Sampai jumpa lagi!

じゃあ、 また — Jaa, mata (^^)

Reference

--

--

Ziyadatul Hikmah

GIS Assistant based in Laboratory of Environmental Analysis and Geospatial Modelling, Faculty of Forestry and Environment, IPB University.