###Bab 6 Lists dan Data Frames #6.1 List Penjalasan List adalah objek R yang dapat menyimpan beberapa objek dengan tipe data berbeda dalam satu struktur. Setiap komponen dapat diakses menggunakan [[ ]], [ ], atau $.
# Membuat list
data_mahasiswa <- list(
nama = "Ivan",
umur = 18,
nilai = c(80, 85, 90)
)
# Menampilkan list
data_mahasiswa
## $nama
## [1] "Ivan"
##
## $umur
## [1] 18
##
## $nilai
## [1] 80 85 90
# Mengakses komponen
data_mahasiswa[[1]]
## [1] "Ivan"
data_mahasiswa$nama
## [1] "Ivan"
data_mahasiswa$nilai
## [1] 80 85 90
# Melihat jumlah komponen
length(data_mahasiswa)
## [1] 3
# Perbedaan [[ ]] dan [ ]
data_mahasiswa[[1]]
## [1] "Ivan"
data_mahasiswa[1]
## $nama
## [1] "Ivan"
List digunakan untuk menyimpan berbagai jenis data dalam satu objek dan memudahkan pengelompokan data.
#6.2 Constructing and Modifying Lists Penjelasan: List dibuat menggunakan list(). Komponen baru dapat ditambahkan dan nilai komponen yang sudah ada dapat diubah
# Membuat list
mahasiswa <- list(
nama = "Ivan",
umur = 18,
jurusan = "Statistika",
nilai = c(80, 85, 90)
)
# Menampilkan list
mahasiswa
## $nama
## [1] "Ivan"
##
## $umur
## [1] 18
##
## $jurusan
## [1] "Statistika"
##
## $nilai
## [1] 80 85 90
# Menambahkan komponen
mahasiswa$semester <- 1
# Mengubah komponen
mahasiswa$umur <- 19
# Menampilkan hasil
mahasiswa
## $nama
## [1] "Ivan"
##
## $umur
## [1] 19
##
## $jurusan
## [1] "Statistika"
##
## $nilai
## [1] 80 85 90
##
## $semester
## [1] 1
List bersifat fleksibel karena komponennya dapat ditambahkan dan diubah sesuai kebutuhan.
#6.3 Data Frames Penjelasan: Data frame adalah struktur data berbentuk tabel yang terdiri dari baris dan kolom. Kolom dapat memiliki tipe data berbeda, tetapi panjang setiap kolom harus sama.
# Membuat data frame
data_mahasiswa <- data.frame(
nama = c("Ivan", "Budi", "Andi"),
umur = c(18, 19, 18),
nilai = c(85, 90, 80)
)
# Menampilkan data
data_mahasiswa
## nama umur nilai
## 1 Ivan 18 85
## 2 Budi 19 90
## 3 Andi 18 80
# Mengakses kolom
data_mahasiswa$nama
## [1] "Ivan" "Budi" "Andi"
data_mahasiswa$nilai
## [1] 85 90 80
# Menghitung rata-rata nilai
mean(data_mahasiswa$nilai)
## [1] 85
Data frame digunakan untuk menyimpan dan mengolah data berbentuk tabel dalam R.
#6.3.1 Making Data Frames Penjelasan: Data frame dapat dibuat dengan data.frame(). List yang sesuai juga dapat diubah menjadi data frame menggunakan as.data.frame()
# Membuat vector
nama <- c("Ivan", "Budi", "Andi")
umur <- c(18, 19, 18)
nilai <- c(85, 90, 80)
# Membuat data frame
mahasiswa <- data.frame(
nama = nama,
umur = umur,
nilai = nilai
)
# Menampilkan data frame
mahasiswa
## nama umur nilai
## 1 Ivan 18 85
## 2 Budi 19 90
## 3 Andi 18 80
# Membuat list
data_list <- list(
nama = c("Ivan", "Budi", "Andi"),
nilai = c(85, 90, 80)
)
# Mengubah list menjadi data frame
df <- as.data.frame(data_list)
# Menampilkan hasil
df
## nama nilai
## 1 Ivan 85
## 2 Budi 90
## 3 Andi 80
data.frame() digunakan untuk membuat data frame, sedangkan as.data.frame() digunakan untuk mengubah objek menjadi data frame.
#6.3.2 attach() and detach() Penjelasan: attach() membuat variabel dalam data frame dapat dipanggil langsung tanpa menuliskan nama data frame. detach() digunakan untuk melepaskannya dari search path.
# Membuat data frame
mahasiswa <- data.frame(
nama = c("Ivan", "Budi", "Andi"),
nilai = c(85, 90, 80)
)
# Menghubungkan data frame
attach(mahasiswa)
## The following objects are masked _by_ .GlobalEnv:
##
## nama, nilai
# Mengakses variabel secara langsung
nama
## [1] "Ivan" "Budi" "Andi"
nilai
## [1] 85 90 80
# Menghitung rata-rata
mean(nilai)
## [1] 85
# Melepaskan data frame
detach(mahasiswa)
attach() memudahkan akses variabel, sedangkan detach() menghapus data frame dari search path.
#6.3.3 Working with Data Frames Penjelasan: Data frame sebaiknya digunakan untuk mengelompokkan variabel yang berkaitan dengan satu permasalahan agar data lebih terorganisir dan mudah dianalisis.
# Membuat data frame
mahasiswa <- data.frame(
nama = c("Ivan", "Budi", "Andi"),
nilai = c(85, 90, 80)
)
# Menambahkan kolom baru
mahasiswa$grade <- c("B", "A", "B")
# Menampilkan data
mahasiswa
## nama nilai grade
## 1 Ivan 85 B
## 2 Budi 90 A
## 3 Andi 80 B
# Mengakses kolom nilai
mahasiswa$nilai
## [1] 85 90 80
# Menghitung rata-rata
mean(mahasiswa$nilai)
## [1] 85
#6.3.4 Attaching Arbitrary Lists Penjelasan: attach() juga dapat digunakan pada objek berbentuk list. Setelah digunakan, list dapat dilepaskan menggunakan detach().
# Membuat list
data <- list(
nama = "Ivan",
nilai = 85
)
# Menghubungkan list
attach(data)
## The following objects are masked _by_ .GlobalEnv:
##
## nama, nilai
# Mengakses komponen
nama
## [1] "Ivan" "Budi" "Andi"
nilai
## [1] 85 90 80
# Melepaskan list
detach(data)
List dapat di-attach() agar komponennya dapat dipanggil langsung berdasarkan nama.
#6.3.5 Managing the Search Path Penjelasan: Search path menunjukkan tempat-tempat yang digunakan R untuk mencari objek. search() digunakan untuk melihat search path dan ls() untuk melihat isi suatu posisi.
# Melihat search path awal
search()
## [1] ".GlobalEnv" "package:stats" "package:graphics"
## [4] "package:grDevices" "package:utils" "package:datasets"
## [7] "package:methods" "Autoloads" "package:base"
# Membuat data frame
mahasiswa <- data.frame(
nama = c("Ivan", "Budi"),
nilai = c(85, 90)
)
# Attach data frame
attach(mahasiswa)
## The following objects are masked _by_ .GlobalEnv:
##
## nama, nilai
# Melihat search path
search()
## [1] ".GlobalEnv" "mahasiswa" "package:stats"
## [4] "package:graphics" "package:grDevices" "package:utils"
## [7] "package:datasets" "package:methods" "Autoloads"
## [10] "package:base"
# Melihat objek pada posisi kedua
ls(2)
## [1] "nama" "nilai"
# Detach data frame
detach("mahasiswa")
# Melihat search path setelah detach
search()
## [1] ".GlobalEnv" "package:stats" "package:graphics"
## [4] "package:grDevices" "package:utils" "package:datasets"
## [7] "package:methods" "Autoloads" "package:base"
search() digunakan untuk mengetahui objek yang aktif dalam search path, sedangkan ls() digunakan untuk melihat isinya.
###BAB 7 — READING DATA FROM FILES
#7.1 The read.table() Function Penjelasan: read.table() digunakan untuk membaca data berbentuk tabel dari file eksternal ke dalam data frame. Jika baris pertama berisi nama kolom, gunakan header=TRUE.
# Memb# Membaca file
# Membuat data untuk contoh
data_mahasiswa <- data.frame(
nama = c("Ivan", "Budi", "Andi"),
umur = c(18, 19, 18),
nilai = c(85, 90, 80)
)
# Menyimpan data ke file teks
write.table(
data_mahasiswa,
"mahasiswa.txt",
row.names = FALSE
)
# Membaca file menggunakan read.table()
mahasiswa <- read.table(
"mahasiswa.txt",
header = TRUE
)
# Menampilkan data
mahasiswa
## nama umur nilai
## 1 Ivan 18 85
## 2 Budi 19 90
## 3 Andi 18 80
# Melihat struktur data
str(mahasiswa)
## 'data.frame': 3 obs. of 3 variables:
## $ nama : chr "Ivan" "Budi" "Andi"
## $ umur : int 18 19 18
## $ nilai: int 85 90 80
# Menampilkan 6 baris pertama
head(mahasiswa)
## nama umur nilai
## 1 Ivan 18 85
## 2 Budi 19 90
## 3 Andi 18 80
#7.2 The scan() Function Penjelasan: scan() digunakan untuk membaca data dari file secara langsung. Data dapat dibaca sebagai vector atau beberapa komponen dalam bentuk list.
# Membuat file input.dat terlebih dahulu
cat(
"A001 85 18
A002 90 19
A003 80 18",
file = "input.dat"
)
# Membaca file menggunakan scan()
inp <- scan(
"input.dat",
what = list(
id = "",
nilai = 0,
umur = 0
)
)
# Menampilkan hasil
inp
## $id
## [1] "A001" "A002" "A003"
##
## $nilai
## [1] 85 90 80
##
## $umur
## [1] 18 19 18
# Mengakses masing-masing komponen
inp$id
## [1] "A001" "A002" "A003"
inp$nilai
## [1] 85 90 80
inp$umur
## [1] 18 19 18
Dataset bawaan R dapat langsung digunakan untuk latihan dan analisis tanpa harus mengimpor data dari luar
#7.3.1 Loading Data from Other R Packages Penjelasan: Dataset juga dapat berasal dari package R lainnya. Dataset dari package tertentu dapat dipanggil menggunakan argumen
# Melihat dataset yang tersedia pada package rpart
data(package = "rpart")
# Mengambil dataset dari package datasets
data(Puromycin, package = "datasets")
# Menampilkan data
Puromycin
## conc rate state
## 1 0.02 76 treated
## 2 0.02 47 treated
## 3 0.06 97 treated
## 4 0.06 107 treated
## 5 0.11 123 treated
## 6 0.11 139 treated
## 7 0.22 159 treated
## 8 0.22 152 treated
## 9 0.56 191 treated
## 10 0.56 201 treated
## 11 1.10 207 treated
## 12 1.10 200 treated
## 13 0.02 67 untreated
## 14 0.02 51 untreated
## 15 0.06 84 untreated
## 16 0.06 86 untreated
## 17 0.11 98 untreated
## 18 0.11 115 untreated
## 19 0.22 131 untreated
## 20 0.22 124 untreated
## 21 0.56 144 untreated
## 22 0.56 158 untreated
## 23 1.10 160 untreated
# Melihat struktur data
str(Puromycin)
## 'data.frame': 23 obs. of 3 variables:
## $ conc : num 0.02 0.02 0.06 0.06 0.11 0.11 0.22 0.22 0.56 0.56 ...
## $ rate : num 76 47 97 107 123 139 159 152 191 201 ...
## $ state: Factor w/ 2 levels "treated","untreated": 1 1 1 1 1 1 1 1 1 1 ...
## - attr(*, "reference")= chr "A1.3, p. 269"
R dapat mengambil dataset dari berbagai package sehingga pilihan data untuk latihan dan analisis menjadi lebih banyak.
#7.4 Editing Data Penjelasan: edit() digunakan untuk mengedit data frame atau matrix melalui tampilan seperti spreadsheet. fix() digunakan untuk mengedit objek secara langsung.
# Membuat data frame
mahasiswa <- data.frame(
nama = c("Ivan", "Budi", "Andi"),
nilai = c(85, 90, 80)
)
# Mengedit dan menyimpan sebagai objek baru
mahasiswa_baru <- edit(mahasiswa)
# Menampilkan data hasil edit
mahasiswa_baru
## nama nilai
## 1 Ivan 85
## 2 Budi 90
## 3 Andi 80
# Mengedit objek secara langsung
fix(mahasiswa)
# Membuat data frame baru melalui editor
data_baru <- edit(data.frame())
edit() dan fix() digunakan untuk melakukan perubahan data secara langsung melalui tampilan seperti spreadsheet, terutama untuk perubahan data dalam jumlah kecil.