library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.2.2
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6 ✔ purrr 0.3.5
## ✔ tibble 3.1.8 ✔ dplyr 1.0.10
## ✔ tidyr 1.2.1 ✔ stringr 1.4.1
## ✔ readr 2.1.4 ✔ forcats 0.5.2
## Warning: package 'readr' was built under R version 4.2.3
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library(nycflights13)
## Warning: package 'nycflights13' was built under R version 4.2.3
library(Lahman)
## Warning: package 'Lahman' was built under R version 4.2.3
Seringkali, kita ingin memfilter kumpulan data sehingga kita hanya
melihat pengamatan yang memenuhi kondisi tertentu. Misalnya, kita hanya
ingin melihat mobil dalam mpgkumpulan data yang memiliki
mesin minimal 6 silinder. Kode untuk ini adalah:
filter(mpg, cyl >= 6)
## # A tibble: 149 × 11
## manufacturer model displ year cyl trans drv cty hwy fl class
## <chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
## 1 audi a4 2.8 1999 6 auto… f 16 26 p comp…
## 2 audi a4 2.8 1999 6 manu… f 18 26 p comp…
## 3 audi a4 3.1 2008 6 auto… f 18 27 p comp…
## 4 audi a4 quattro 2.8 1999 6 auto… 4 15 25 p comp…
## 5 audi a4 quattro 2.8 1999 6 manu… 4 17 25 p comp…
## 6 audi a4 quattro 3.1 2008 6 auto… 4 17 25 p comp…
## 7 audi a4 quattro 3.1 2008 6 manu… 4 15 25 p comp…
## 8 audi a6 quattro 2.8 1999 6 auto… 4 15 24 p mids…
## 9 audi a6 quattro 3.1 2008 6 auto… 4 17 25 p mids…
## 10 audi a6 quattro 4.2 2008 8 auto… 4 16 23 p mids…
## # … with 139 more rows
Anda dapat melihat kumpulan data yang difilter lengkap dengan memberinya nama dan kemudian melihatnya:
cyl6 <- filter(mpg, cyl >= 6)
View(cyl6)
Secara umum, sintaks untuk filterfungsi tersebut
adalah:
filter(<DATA SET>, <CONDITIONS>)
Argumen kondisi dalam filteradalah pernyataan yang
nilainya adalah salah
satu TRUEatau FALSE. Pernyataan-pernyataan ini
sering dibangun sebagai persamaan dan ketidaksetaraan. Sebagai contoh,
misalkan kita membuat
tugas x <- 7dan y <- 9. Maka kita akan
memiliki:
Perhatikan bahwa tanda sama dengan ganda ==digunakan
untuk memeriksa kesetaraan, sedangkan tanda sama dengan tunggal
=digunakan untuk membuat penugasan nilai ke variabel.
Anda juga dapat meniadakan atau membentuk pernyataan majemuk. Misalnya
Perhatikan bahwa pernyataan "dan" hanya benar jika kedua kondisinya benar. Pernyataan “atau” benar selama setidaknya salah satu kondisinya benar.
Nilai TRUEdan FALSEsebenarnya dapat
ditangani secara hitung dalam R. Nilai TRUEdiberi nilai 1,
dan FALSEdiberi 0. Contoh:
TRUE + TRUE
## [1] 2
FALSE * 28
## [1] 0
Ini berguna saat Anda ingin menghitung berapa banyak nilai dalam
kolom yang memenuhi kondisi tertentu. Misalnya, kita ingin mengetahui
berapa banyak mobil yang mpgmemiliki penggerak 4
roda. Dalam potongan kode berikut, mpg$drvmerujuk
ke drvkolom di dalam mpg.
sum(mpg$drv == "4")
## [1] 103
Kondisi mpg$drv == "4"menetapkan nilai dari
TRUEatau FALSEke semua nilai dalam kolom
drvtergantung mpgpada apakah
drvnilainya “4” atau tidak. (Karena
drvmerupakan variabel non-numerik, kita membutuhkan tanda
kutip di sekitar nilainya, meskipun 4 itu sendiri sebenarnya adalah
angka.) sumFungsi tersebut kemudian menambahkan nilai
TRUE/ ini, diperlakukan sebagai 1 dan sebagai
0.FALSETRUEFALSE
Kita juga dapat menggunakan meanfungsi untuk menghitung
persentase nilai dalam kolom yang memenuhi syarat. Sebagai
contoh, persentase mobil berpenggerak 4 roda pada tahun
mpgdiberikan oleh:
mean(mpg$drv == "4")
## [1] 0.4401709
Alasan mengapa ini berhasil adalah meanmenemukan
rata-rata dari semua angka 1 dan 0 yang ditetapkan ke nilai
kolom drvdengan
pernyataan mpg$drv == "4". Dengan demikian, ia menemukan
jumlah dari 1 dan 0 ini (yang menghasilkan jumlah mobil berpenggerak 4
roda) dan kemudian membaginya dengan jumlah total 1 dan 0. Jadi, kami
membagi jumlah mobil berpenggerak 4 roda dengan jumlah total mobil,
menghasilkan persentase mobil berpenggerak 4 roda.