Nomor 1

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

Perintah tersebut digunakan untuk membuat sebuah vektor bernama nama_vector yang diisi dengan campuran tipe data numerik (5), logika (FALSE), dan karakter (“true”, “Statistika”), namun karena sifat dasar vektor di R yang mengharuskan semua elemennya memiliki tipe data yang sama (homogen), R secara otomatis melakukan proses pemaksaan tipe data (implicit coercion). Karena tipe data karakter memiliki hierarki yang paling tinggi dan paling fleksibel dibandingkan angka atau logika, R mengubah seluruh nilai di dalam vektor tersebut menjadi teks, sehingga hasil akhirnya (output) menampilkan semua elemen diapit oleh tanda kutip ganda sebagai karakter, yaitu “5”, “FALSE”, “true”, dan “Statistika”.

Nomor 2

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

Setelah menjalankan perintah di atas, perbedaan utama yang dapat diperoleh adalah bagaimana keduanya menangani tipe data yang berbeda-beda. Vector bersifat homogen, artinya ia memaksa (melakukan coercion) semua elemen di dalamnya menjadi satu tipe data yang sama (dalam latihan no.1, angka 5 dan logika FALSE dipaksa berubah menjadi teks/karakter). Sebaliknya, List bersifat heterogen, yang berarti list dapat menyimpan berbagai tipe data (angka, logika, karakter) secara bersamaan tanpa mengubah tipe data aslinya. Pada contoh_list, angka 5 tetap menjadi numerik, FALSE tetap menjadi logik/boolean, dan “Statistika” tetap menjadi karakter.

Nomor 3

Kelompok_kkn <- data.frame(
nama = c("Broto", "Sibrad", "Andi", "Bowo", "Joko", "Shakira", "Nadhia", "Balqis", "Walid", "Messi"),
nim = c("001", "002", "003", "004", "005", "006", "007", "008", "009", "010"),
prodi = c("Statistika", "Matematika", "Biologi", "Kimia", "Fisika", "Statistika", "Matematika", "Biologi", "Kimia", "Fisika")
)
Kelompok_kkn 
##       nama nim      prodi
## 1    Broto 001 Statistika
## 2   Sibrad 002 Matematika
## 3     Andi 003    Biologi
## 4     Bowo 004      Kimia
## 5     Joko 005     Fisika
## 6  Shakira 006 Statistika
## 7   Nadhia 007 Matematika
## 8   Balqis 008    Biologi
## 9    Walid 009      Kimia
## 10   Messi 010     Fisika
Kelompok_kkn[3, ]
##   nama nim   prodi
## 3 Andi 003 Biologi
Kelompok_kkn[1:5, ]
##     nama nim      prodi
## 1  Broto 001 Statistika
## 2 Sibrad 002 Matematika
## 3   Andi 003    Biologi
## 4   Bowo 004      Kimia
## 5   Joko 005     Fisika
Kelompok_kkn[, 1]
##  [1] "Broto"   "Sibrad"  "Andi"    "Bowo"    "Joko"    "Shakira" "Nadhia" 
##  [8] "Balqis"  "Walid"   "Messi"
Kelompok_kkn$prodi
##  [1] "Statistika" "Matematika" "Biologi"    "Kimia"      "Fisika"    
##  [6] "Statistika" "Matematika" "Biologi"    "Kimia"      "Fisika"
Kelompok_kkn[["nim"]]
##  [1] "001" "002" "003" "004" "005" "006" "007" "008" "009" "010"
Kelompok_kkn[4, 1]
## [1] "Bowo"
Kelompok_kkn[7, "prodi"]
## [1] "Matematika"

Dari eksperimen di atas, kita dapat menyimpulkan beberapa perbedaan cara memanggil data pada data frame:

Menggunakan Indeks Angka [baris, kolom]: Cara ini paling fleksibel karena Anda bisa menentukan posisi baris dan kolom secara presisi menggunakan angka. Jika Anda mengosongkan bagian baris (misal [, 2]), R akan menampilkan semua baris untuk kolom tersebut. Jika Anda mengosongkan bagian kolom (misal [3, ]), R akan menampilkan semua kolom untuk baris tersebut.

Menggunakan Simbol Dollar (\(): Cara ini (contoh: kelompok_kkn\)prodi) dikhususkan untuk memanggil keseluruhan isi dari satu kolom tertentu berdasarkan namanya. Cara ini sangat praktis, cepat, dan sering digunakan dalam analisis data, namun hasil outputnya akan langsung diubah (coerced) menjadi sebuah vector, bukan lagi berwujud tabel data frame.

Menggunakan Nama Kolom dalam Kurung Siku ([ , “nama_kolom”] atau [[“nama_kolom”]]): Ini adalah alternatif dari indeks angka. Anda bisa menggunakan nama kolom secara eksplisit agar kode lebih mudah dibaca (misalnya kelompok_kkn[2, “nama”] lebih intuitif daripada kelompok_kkn[2, 1]). Penggunaan kurung siku ganda [[ ]] mirip dengan tanda $, yaitu mengekstrak satu kolom penuh sebagai sebuah vektor.

Nomor 4

nama <- c("Andi", "Bambang", "Brody", "Hylos", "Zetian")
umur <- c(20, NA, 22, 21, NA)
nilai <- c(85, 90, NA, 88, 75)

data_mahasiswa <- data.frame(nama, umur, nilai)

data_mahasiswa
##      nama umur nilai
## 1    Andi   20    85
## 2 Bambang   NA    90
## 3   Brody   22    NA
## 4   Hylos   21    88
## 5  Zetian   NA    75
is.na(data_mahasiswa)
##       nama  umur nilai
## [1,] FALSE FALSE FALSE
## [2,] FALSE  TRUE FALSE
## [3,] FALSE FALSE  TRUE
## [4,] FALSE FALSE FALSE
## [5,] FALSE  TRUE FALSE
posisi_na <- which(is.na(data_mahasiswa), arr.ind = TRUE)
posisi_na
##      row col
## [1,]   2   2
## [2,]   5   2
## [3,]   3   3

Saat Anda menjalankan is.na(data_mahasiswa), R akan menampilkan tabel dengan ukuran yang sama seperti data frame asli, namun isinya hanya berupa TRUE dan FALSE. Nilai TRUE menandakan letak data yang NA. Saat menggunakan which(is.na(data_mahasiswa), arr.ind = TRUE), R akan memberikan output berupa matriks yang secara gamblang menunjukkan nomor baris (row) dan kolom (col) mana saja yang mengalami missing value