Soal 1

Ketikkan perintah berikut dan jelaskan hasilnya.

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

Jawaban

Vector nama_vector berisi lima elemen dengan tipe data yang berbeda, yaitu: numeric (5), logical (FALSE), dan character (“true”, “8.3”, “Statistika”).

Namun, karena dalam vector terdapat elemen bertipe character, maka R secara otomatis melakukan coercion (konversi tipe data). Akibatnya, seluruh elemen dalam vector diubah menjadi tipe data character.

Hal ini terjadi karena R mengikuti hirarki tipe data sebagai berikut:

logical < numeric < character

Sehingga tipe data dengan prioritas tertinggi (character) akan mendominasi. Oleh karena itu, angka 5 dan nilai FALSE ikut dikonversi menjadi “5” dan “FALSE”.

Soal 2

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"
class(contoh_list)
## [1] "list"

Jawaban

List contoh_list berisi elemen yang sama seperti pada Latihan 1, yaitu: numeric (5), logical (FALSE), dan character (“true”, “8.3”, “Statistika”).

Setelah dijalankan, terlihat bahwa setiap elemen pada list tetap mempertahankan tipe data aslinya dan tidak mengalami perubahan tipe data.

Hal ini berbeda dengan vector pada Latihan 1, di mana seluruh elemen mengalami coercion dan diubah menjadi tipe character karena vector hanya dapat menyimpan satu tipe data.

Dengan demikian, perbedaan utama antara list dan vector adalah:

Soal 3

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.

# Membuat data frame
kelompok_kkn <- data.frame(
  nama = c("Abel", "Nabila", "Amel", "Iqbal", "Nopal",
           "Zahrul", "Disa", "Kirana", "Deswa", "Ayis"),
  nim = c("2404010022", "2404010015", "2404010012", "2404010004", "2404010009",
          "2404010006", "2404010011", "2404010010", "2404010003", "2404010027"),
  prodi = c("Statistika", "Matematika", "Informatika", "Statistika", "Fisika",
            "Statistika", "Kimia", "Matematika", "Informatika", "Statistika")
)

kelompok_kkn
##      nama        nim       prodi
## 1    Abel 2404010022  Statistika
## 2  Nabila 2404010015  Matematika
## 3    Amel 2404010012 Informatika
## 4   Iqbal 2404010004  Statistika
## 5   Nopal 2404010009      Fisika
## 6  Zahrul 2404010006  Statistika
## 7    Disa 2404010011       Kimia
## 8  Kirana 2404010010  Matematika
## 9   Deswa 2404010003 Informatika
## 10   Ayis 2404010027  Statistika

Pemanggilan Baris

kelompok_kkn[2, ]
##     nama        nim      prodi
## 2 Nabila 2404010015 Matematika

Pemanggilan Kolom

kelompok_kkn[, 1]
##  [1] "Abel"   "Nabila" "Amel"   "Iqbal"  "Nopal"  "Zahrul" "Disa"   "Kirana"
##  [9] "Deswa"  "Ayis"
kelompok_kkn$nama
##  [1] "Abel"   "Nabila" "Amel"   "Iqbal"  "Nopal"  "Zahrul" "Disa"   "Kirana"
##  [9] "Deswa"  "Ayis"
kelompok_kkn[, "nama"]
##  [1] "Abel"   "Nabila" "Amel"   "Iqbal"  "Nopal"  "Zahrul" "Disa"   "Kirana"
##  [9] "Deswa"  "Ayis"

Pemanggilan Elemen Tertentu

kelompok_kkn[3, 2]
## [1] "2404010012"

Jawaban

Data frame kelompok_kkn merupakan struktur data berbentuk tabel dua dimensi yang terdiri dari baris (row) dan kolom (column). Setiap kolom dapat memiliki tipe data yang berbeda, namun panjang setiap kolom harus sama.

Struktur umum pemanggilan elemen dalam data frame di R adalah:

data[baris, kolom]

Tanda koma (,) digunakan untuk memisahkan indeks baris dan kolom. Jika salah satu bagian dikosongkan, maka R akan mengambil seluruh bagian tersebut.

  1. Pemanggilan Baris

Perintah:

kelompok_kkn[2, ]

Artinya mengambil baris ke-2 dan seluruh kolom. Bagian kolom dikosongkan sehingga R menampilkan semua kolom pada baris tersebut.

Hasilnya tetap berbentuk data frame karena masih memiliki lebih dari satu kolom (masih dua dimensi).

  1. Pemanggilan Kolom

Pemanggilan kolom dapat dilakukan dengan beberapa cara: - kelompok_kkn[, 1] → berdasarkan posisi kolom. - kelompok_kkn$nama → berdasarkan nama kolom menggunakan simbol $. - kelompok_kkn[, “nama”] → berdasarkan nama kolom dalam bentuk string. Ketiga cara tersebut menghasilkan isi kolom yang sama. Namun terdapat perbedaan penting:

Ketika satu kolom saja dipanggil, R secara otomatis menyederhanakan hasilnya menjadi vector. Hal ini terjadi karena data frame bersifat dua dimensi, dan ketika hanya satu kolom diambil, dimensinya menjadi satu sehingga berubah menjadi vector.

  1. Pemanggilan Elemen Tertentu

Perintah:

kelompok_kkn[3, 2]

Artinya mengambil nilai pada baris ke-3 dan kolom ke-2. Karena hanya satu baris dan satu kolom yang ditentukan, maka hasilnya adalah satu nilai tunggal.

Perbedaan Cara Pemanggilan - data[baris, ] → mengambil satu baris penuh. - data[, kolom] → mengambil satu kolom penuh. - data[baris, kolom] → mengambil satu elemen tertentu. - data$nama_kolom → mengambil kolom berdasarkan nama.

Perbedaan utama terletak pada bagian indeks yang diisi dalam tanda [ , ]. Pemahaman terhadap struktur ini sangat penting dalam manipulasi dan analisis data menggunakan R.

Soal 4

Buatlah data frame yang beberapa datanya berupa missing value. Carilah letak atau posisi data yang berupa missing value tersebut dengan menggunakan perintah is.na.

# Membuat data frame dengan missing value
data_mahasiswa <- data.frame(
  nama = c("Andi", "Budi", "Citra", "Dina", "Eka"),
  umur = c(20, NA, 19, 21, NA),
  ipk  = c(3.5, 3.8, NA, 3.6, 3.9)
)

data_mahasiswa
##    nama umur ipk
## 1  Andi   20 3.5
## 2  Budi   NA 3.8
## 3 Citra   19  NA
## 4  Dina   21 3.6
## 5   Eka   NA 3.9

Mencari Missing Value

is.na(data_mahasiswa)
##       nama  umur   ipk
## [1,] FALSE FALSE FALSE
## [2,] FALSE  TRUE FALSE
## [3,] FALSE FALSE  TRUE
## [4,] FALSE FALSE FALSE
## [5,] FALSE  TRUE FALSE

Mengetahui Posisi Missing Value

which(is.na(data_mahasiswa), arr.ind = TRUE)
##      row col
## [1,]   2   2
## [2,]   5   2
## [3,]   3   3

Jawaban

Missing value dalam R direpresentasikan dengan NA (Not Available). NA menunjukkan bahwa suatu data tidak tersedia atau tidak diketahui nilainya.

Fungsi is.na() digunakan untuk mendeteksi apakah suatu elemen bernilai NA. Perintah is.na(data_mahasiswa) menghasilkan matriks logika yang berisi TRUE pada posisi yang mengandung NA dan FALSE pada posisi lainnya.

Untuk mengetahui posisi secara spesifik (baris dan kolom), digunakan perintah:

which(is.na(data_mahasiswa), arr.ind = TRUE)

Perintah tersebut menampilkan indeks baris dan kolom dari data yang bernilai NA.