Dplyr: cara menggunakan mutate() dengan berbagai kondisi
Anda dapat menggunakan sintaks dasar berikut di dplyr untuk menggunakan fungsi mutate() untuk membuat kolom baru berdasarkan beberapa kondisi:
library (dplyr) df <- df%>% mutate(class = case_when((team == ' A ' & points >= 20) ~ ' A_Good ', (team == ' A ' & points < 20) ~ ' A_Bad ', (team == ' B ' & points >= 20) ~ ' B_Good ', TRUE ~ ' B_Bad '))
Sintaks khusus ini membuat kolom baru bernama class yang mengambil nilai berikut:
- A_Bagus jika timnya sama dengan A dan poinnya lebih besar atau sama dengan 20.
- A_Buruk jika tim sama dengan A dan poinnya kurang dari 20.
- B_Bagus jika timnya sama dengan B dan poinnya lebih besar atau sama dengan 20.
- B_Buruk jika tidak ada kondisi sebelumnya yang terpenuhi.
Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.
Terkait: Cara menggunakan case_when() di dplyr
Contoh: Gunakan mutate() di dplyr dengan beberapa kondisi
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', 'A', 'A', 'B', 'B', 'B', 'B', 'B'), points=c(22, 30, 34, 19, 14, 12, 39, 15, 22, 25)) #view data frame df team points 1 to 22 2 to 30 3 to 34 4 to 19 5 to 14 6 B 12 7 B 39 8 B 15 9 B 22 10 B 25
Kita dapat menggunakan sintaks berikut dengan fungsi mutate() untuk membuat kolom baru bernama kelas yang nilainya didasarkan pada nilai di kolom tim dan poin :
library (dplyr) #add new column based on values in team and points columns df <- df%>% mutate(class = case_when((team == ' A ' & points >= 20) ~ ' A_Good ', (team == ' A ' & points < 20) ~ ' A_Bad ', (team == ' B ' & points >= 20) ~ ' B_Good ', TRUE ~ ' B_Bad ')) #view updated data frame df team points class 1 A 22 A_Good 2 A 30 A_Good 3 A 34 A_Good 4 A 19 A_Bad 5 A 14 A_Bad 6 B 12 B_Bad 7 B 39 B_Good 8 B 15 B_Bad 9 B 22 B_Good 10 B 25 B_Good
Kolom kelas baru mengambil nilai berdasarkan nilai pada kolom tim dan poin .
Misalnya baris pertama mempunyai nilai A pada kolom tim dan nilai poin lebih besar atau sama dengan 20, sehingga mendapat nilai A_Bagus pada kolom kelas baru.
Perhatikan bahwa dalam contoh ini, kami menggunakan simbol & sebagai operator “DAN” untuk memeriksa apakah dua kondisi benar sebelum memberikan nilai di kolom kelas .
Namun, kita bisa menggunakan | simbol sebagai operator “ATAU” untuk memeriksa apakah salah satu dari dua kondisi terpenuhi sebelum memberikan nilai di kolom kelas .
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di dplyr:
dplyr: Cara memutasi variabel jika kolom berisi string
dplyr: Cara mengubah level faktor menggunakan mutate()
dplyr: Cara menggunakan fungsi cross()