1. Ketikkan perintah di bawah ini dan berikan pernyataan apa saja yang dapat kalian peroleh dari perintah tersebut!
nama_vector <- c(5, FALSE, "true", "8.3", "Statistika")
nama_vector
## [1] "5"          "FALSE"      "true"       "8.3"        "Statistika"

Penjelasan : Pada soal pertama dibuat sebuah vector dengan perintah c(5, FALSE, “true”, “8.3”, “Statistika”) yang berisi beberapa tipe data berbeda, yaitu numeric, logical, dan character. Dalam R, vector bersifat homogen sehingga semua elemennya harus memiliki tipe data yang sama. Jika terdapat perbedaan tipe, R akan melakukan type coercion, yaitu mengubah seluruh elemen menjadi satu tipe dengan prioritas tertinggi. Karena terdapat data bertipe character, maka semua elemen akan diubah menjadi character. Akibatnya angka 5 menjadi “5” dan FALSE menjadi “FALSE”. Hal ini menunjukkan bahwa vector tidak dapat menyimpan tipe data campuran.

  1. Cobalah untuk membuat List dengan nama contoh_list yang memiliki elemen sama dengan Latihan no.1, dan panggil seluruh elemen. Berikan perbedaan list dan vector yang dapat kalian peroleh setelah melakukan perintah tersebut
contoh_list <- list(5, FALSE, "true", "8.3", "Statistika")
contoh_list
## [[1]]
## [1] 5
## 
## [[2]]
## [1] FALSE
## 
## [[3]]
## [1] "true"
## 
## [[4]]
## [1] "8.3"
## 
## [[5]]
## [1] "Statistika"

Penjelasan : Pada soal kedua dibuat list dengan elemen yang sama. Berbeda dengan vector, list bersifat heterogen sehingga dapat menyimpan berbagai tipe data tanpa mengubah tipe aslinya. Saat menggunakan list(5, FALSE, “true”, “8.3”, “Statistika”), setiap elemen tetap pada tipe masing-masing: numeric, logical, dan character. Perbedaan utamanya adalah vector memaksa keseragaman tipe data, sedangkan list mempertahankan tipe asli setiap elemen sehingga lebih fleksibel untuk data yang beragam atau kompleks.

  1. Dalam melakukan pemanggilan elemen, kita dapat menggunakan index elemen atau nama kolom. Buatlah data frame dengan nama kelompok_kkn berupa tabel tiga kolom terdiri atas: nama,nim, dan prodi. Isikan minimal 10 baris. Lakukan eksperimen pemanggilan isi tabel, meliputi pemanggilan baris, kolom, dan elemen tabel. Jelaskan mengenai perbedaan cara pemanggilan dalam data frame tersebut.
kelompok_kkn <- data.frame(
     nama = c("Adit","Bima","Taufiq","Doni","Eka","Ilham","Galih","Hilda","Anis","Joko"),
     nim = c(101,102,103,104,105,106,107,108,109,110),
     prodi = c("Statistika","Matematika","Kimia","TI","SI","Statistika","Matematika","Kimia","TI","SI")
   )
kelompok_kkn
##      nama nim      prodi
## 1    Adit 101 Statistika
## 2    Bima 102 Matematika
## 3  Taufiq 103      Kimia
## 4    Doni 104         TI
## 5     Eka 105         SI
## 6   Ilham 106 Statistika
## 7   Galih 107 Matematika
## 8   Hilda 108      Kimia
## 9    Anis 109         TI
## 10   Joko 110         SI

Penjelasan : Pada soal ketiga dibuat data frame bernama kelompok_kkn yang memiliki tiga kolom, yaitu nama, nim, dan prodi, dengan minimal sepuluh baris. Data frame adalah struktur data dua dimensi berbentuk tabel yang terdiri dari baris dan kolom. Setiap kolom merupakan vector sehingga harus bertipe sama (homogen), tetapi antar kolom boleh berbeda tipe, misalnya kolom nama bertipe character dan nim bertipe numeric. Pemanggilan data dalam data frame dapat dilakukan dengan beberapa cara : 1). Baris Pertama, mengambil satu baris penuh dengan [1, ].

      kelompok_kkn[1,]
##   nama nim      prodi
## 1 Adit 101 Statistika

2). Kolom Kedua, menggunakan nama kolom dengan tanda $, misalnya $nama untuk mengambil seluruh isi kolom atau bisa menggunakan [,1] dengan memasukan nomor kolom setelah tanda koma.

      kelompok_kkn$nama
##  [1] "Adit"   "Bima"   "Taufiq" "Doni"   "Eka"    "Ilham"  "Galih"  "Hilda" 
##  [9] "Anis"   "Joko"
      kelompok_kkn[,2]
##  [1] 101 102 103 104 105 106 107 108 109 110

3). Elemen Tabel Ketiga yaitu menggunakan indeks baris dan kolom dengan format [baris, kolom], misalnya [3,2] untuk mengambil data pada baris ketiga kolom kedua.

    kelompok_kkn[3,2]
## [1] 103

Perbedaan cara pemanggilan ini terletak pada fleksibilitas dan kejelasannya. Pemanggilan berdasarkan nama kolom lebih aman karena tidak bergantung pada urutan kolom, sedangkan pemanggilan berdasarkan indeks lebih cepat tetapi bisa salah jika struktur data berubah.

  1. Buatlah data frame yang beberapa datanya berupa missing value. Carilah letak atau posisi data yang berupa missing value tersebut dengan menggunakan perintah is.na.
data_nilai <- data.frame(
   nama = c("Ali","Beni","Caca","Dodi","Evi"),
   nilai = c(80, NA, 75, NA, 90),
   kehadiran = c(90, 85, NA, 88, NA)
 )
data_nilai
##   nama nilai kehadiran
## 1  Ali    80        90
## 2 Beni    NA        85
## 3 Caca    75        NA
## 4 Dodi    NA        88
## 5  Evi    90        NA

Penjelasan : Pada soal keempat terdapat nilai NA yang berarti Not Available atau data hilang. NA bukan nol, bukan string kosong, dan bukan FALSE, melainkan penanda khusus bahwa data tidak tersedia. Untuk mendeteksinya digunakan fungsi is.na(), sedangkan untuk mengetahui posisi baris dan kolomnya dapat memakai which(is.na(…), arr.ind = TRUE). Nilai NA penting diperhatikan karena dapat memengaruhi hasil perhitungan statistik di R, sehingga biasanya perlu dihapus atau diganti sebelum analisis dilakukan.

  is.na(data_nilai)
##       nama nilai kehadiran
## [1,] FALSE FALSE     FALSE
## [2,] FALSE  TRUE     FALSE
## [3,] FALSE FALSE      TRUE
## [4,] FALSE  TRUE     FALSE
## [5,] FALSE FALSE      TRUE
  which(is.na(data_nilai), arr.ind = TRUE)
##      row col
## [1,]   2   2
## [2,]   4   2
## [3,]   3   3
## [4,]   5   3