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()

Tambahkan komentar

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