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.
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.
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.
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