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