Memahami Karakteristik Struktur Data dalam R

Pembahasan ini berfokus pada pemahaman karakteristik struktur data dalam R, meliputi vector, list, dan data frame, serta teknik dasar dalam mengakses, mengelola, dan mengidentifikasi missing value pada data.


1. Vector

Setelah menjalankan perintah:

nama_vector <- c(5, FALSE, "true", "8.3", "Statistika")
nama_vector
## [1] "5"          "FALSE"      "true"       "8.3"        "Statistika"

Diperoleh hasil bahwa seluruh elemen dalam vector ditampilkan dalam tanda kutip.

Vector di R bersifat atomic, artinya hanya dapat menyimpan satu tipe data dalam satu objek. Ketika beberapa tipe data berbeda digabungkan dalam satu vector, R akan melakukan proses coercion (konversi tipe data otomatis).

Pada kasus ini, terdapat elemen bertipe character (“true”, “8.3”, “Statistika”), sehingga seluruh elemen lain (angka dan logical) dikonversi menjadi character.

Dengan demikian dapat disimpulkan bahwa semua elemen berubah menjadi tipe data character dan nilai numerik dan logical tidak lagi diperlakukan sebagai angka atau logika.


2. List

Ketika elemen yang sama dimasukkan ke dalam sebuah list:

contoh_list <- list(5, F, "true", "8,3", "Statistika")
contoh_list
## [[1]]
## [1] 5
## 
## [[2]]
## [1] FALSE
## 
## [[3]]
## [1] "true"
## 
## [[4]]
## [1] "8,3"
## 
## [[5]]
## [1] "Statistika"

Berbeda dengan vector, list tidak bersifat atomic. Artinya, setiap elemen dalam list dapat memiliki tipe data yang berbeda tanpa dipaksa mengikuti tipe tertentu.

Hasilnya yaitu: Angka tetap numerik; FALSE tetap logical; String tetap character; Tidak terjadi coercion.

Perbedaan Utama Vector dan List

Vector List
Hanya satu tipe data Bisa berbagai tipe data
Mengalami coercion Tidak mengalami coercion
Struktur lebih sederhana Struktur lebih fleksibel

3. Data Frame

Data frame merupakan struktur data berbentuk tabel yang terdiri dari baris dan kolom. Setiap kolom dapat memiliki tipe data yang berbeda, namun dalam satu kolom tipe datanya harus konsisten.

Dalam eksperimen pemanggilan datanya yaitu: Pemanggilan berdasarkan baris: data[baris, ]; Pemanggilan berdasarkan kolom: data[, kolom]; Pemanggilan elemen spesifik: data[baris, kolom]; Pemanggilan berdasarkan nama kolom: data$nama_kolom; Pemanggilan semua elemen: print(data).

kelompok_kkn <- data.frame(
  Nama = c("Ha Yichan", "Ha Eungyeol", "Kang Hyunyul", "Lee Shigook", "No Sebum", "Oh Majoo", "Yoon Cheongah", "Choi Eunyu"),
  NIM = c(23111, 23092, 23213, 23514, 23405, 23316, 23107, 23078),
  Prodi = c("Sastra Perancis", "Statistika & Sains Data", "Pendidikan Teknik Otomotif", "Ilmu Keolahragaan", "Ilmu Hukum", "Akuntansi", "Seni Rupa", "Matematika"))

## PEMANGGILAN DATA

# Memanggil Kolom
kelompok_kkn$Nama
## [1] "Ha Yichan"     "Ha Eungyeol"   "Kang Hyunyul"  "Lee Shigook"  
## [5] "No Sebum"      "Oh Majoo"      "Yoon Cheongah" "Choi Eunyu"
kelompok_kkn[["NIM"]]
## [1] 23111 23092 23213 23514 23405 23316 23107 23078
kelompok_kkn[,2]
## [1] 23111 23092 23213 23514 23405 23316 23107 23078
# Memanggil Baris
kelompok_kkn[1,]
##        Nama   NIM           Prodi
## 1 Ha Yichan 23111 Sastra Perancis
kelompok_kkn[2,]
##          Nama   NIM                   Prodi
## 2 Ha Eungyeol 23092 Statistika & Sains Data
# Memanggil Eelemen Tertentu
kelompok_kkn[3,1]
## [1] "Kang Hyunyul"

Analisis Perbedaannya: Menggunakan indeks numerik lebih bergantung pada posisi data; Menggunakan nama kolom lebih fleksibel dan aman ketika struktur data berubah; Pemanggilan baris dan kolom sekaligus menghasilkan satu nilai spesifik; Pemanggilan satu kolom menghasilkan satu vector.

Data frame lebih kompleks dibanding vector dan list karena memiliki dimensi dua arah (baris dan kolom).


4. Missing Value

Dalam pembuatan data frame yang mengandung nilai kosong (NA), R menyediakan fungsi is.na() untuk mendeteksi keberadaan missing value.

data_mv <- data.frame(
  Nama = c("Ha Yichan","Ha Eungyeol",NA, "Yoon Cheongah","Choi Eunyu"),
  nilai = c(NA, 95, 80, 90, 85))

data_mv
##            Nama nilai
## 1     Ha Yichan    NA
## 2   Ha Eungyeol    95
## 3          <NA>    80
## 4 Yoon Cheongah    90
## 5    Choi Eunyu    85
## MENGECEK MISSING VALUE
is.na(data_mv)
##       Nama nilai
## [1,] FALSE  TRUE
## [2,] FALSE FALSE
## [3,]  TRUE FALSE
## [4,] FALSE FALSE
## [5,] FALSE FALSE
sum(is.na(data_mv))
## [1] 2
which(is.na(data_mv), arr.ind = TRUE)
##      row col
## [1,]   3   1
## [2,]   1   2

Analisisnya: is.na(data) → menampilkan posisi TRUE/FALSE; sum(is.na(data)) → menghitung jumlah NA; which(is.na(data), arr.ind = TRUE) → mengetahui posisi baris dan kolom NA.

Missing value dapat diidentifikasi dengan mudah menggunakan fungsi bawaan R. Informasi posisi NA penting untuk proses pembersihan data sebelum analisis lebih lanjut dilakukan.