Cara menggunakan filter bersyarat di dplyr


Anda dapat menggunakan sintaks dasar berikut untuk menerapkan filter kondisional pada bingkai data menggunakan fungsi dalam paket dplyr di R:

 library (dplyr)

#filter data frame where points is greater than some value (based on team)
df %>% 
  filter(case_when(team==' A ' ~ points > 15,
                   team==' B ' ~ points > 20,
                   TRUE ~ points > 30))

Contoh khusus ini memfilter baris dalam bingkai data yang nilai kolom poinnya lebih besar dari nilai tertentu, bergantung pada nilai kolom tim .

Terkait: Pengantar case_when() di dplyr

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.

Contoh: Cara menggunakan filter kondisional di dplyr

Misalkan kita memiliki kerangka data berikut di R yang berisi informasi tentang berbagai pemain bola basket:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
                 points=c(10, 12, 17, 18, 24, 29, 29, 34, 35))

#view data frame
df

  team points
1 to 10
2 to 12
3 to 17
4 B 18
5 B 24
6 B 29
7 C 29
8 C 34
9 C 35

Sekarang anggaplah kita ingin menerapkan filter bersyarat berikut:

  • Hanya pertahankan garis untuk pemain Tim A yang poinnya lebih besar dari 15.
  • Hanya pertahankan garis untuk pemain Tim B yang poinnya lebih besar dari 20.
  • Hanya pertahankan garis untuk pemain Tim C yang poinnya di atas 30.

Kita dapat menggunakan fungsi filter() dan case_when() dari paket dplyr untuk menerapkan filter bersyarat ini pada bingkai data:

 library (dplyr)

#filter data frame where points is greater than some value (based on team)
df %>% 
  filter(case_when(team==' A ' ~ points > 15,
                   team==' B ' ~ points > 20,
                   TRUE ~ points > 30))

  team points
1 to 17
2 B 24
3 B 29
4 C 34
5 C 35

Baris dalam bingkai data sekarang difilter jika nilai di kolom poin lebih besar dari nilai tertentu, bergantung pada nilai di kolom tim .

Catatan #1 : Dalam fungsi case_when() , kita menggunakan TRUE pada argumen terakhir untuk mewakili semua nilai di kolom tim yang tidak sama dengan “A” atau “B”.

Catatan #2 : Anda dapat menemukan dokumentasi lengkap untuk fungsi dplyr case_when() di sini .

Sumber daya tambahan

Tutorial berikut menjelaskan cara menjalankan fungsi umum lainnya di dplyr:

Cara memfilter berdasarkan nomor baris menggunakan dplyr
Cara memfilter berdasarkan beberapa kondisi menggunakan dplyr
Cara menggunakan filter “tidak termasuk” di dplyr

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *