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

Memfilter Kumpulan Data

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.