Dplyr: cara memutasi variabel jika kolom berisi string
Anda dapat menggunakan sintaks dasar berikut di dplyr untuk mengubah variabel jika kolom berisi string tertentu:
library (dplyr) df %>% mutate_at(vars(contains(' starter ')), ~ (scale(.) %>% as. vector ))
Sintaks khusus ini menerapkan fungsi scale() ke setiap variabel dalam bingkai data yang berisi string “starter” di nama kolom.
Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.
Contoh: mutasi variabel jika kolomnya berisi string
Misalkan kita memiliki bingkai data berikut di R:
#create data frame df <- data. frame (team=c('A', 'B', 'C', 'D', 'E', 'F'), starter_points=c(22, 26, 25, 13, 15, 22), starter_assists=c(4, 5, 10, 14, 12, 10), bench_points=c(7, 7, 9, 14, 13, 10), bench_assists=c(2, 5, 5, 4, 9, 14)) #view data frame df team starter_points starter_assists bench_points bench_assists 1 to 22 4 7 2 2 B 26 5 7 5 3 C 25 10 9 5 4 D 13 14 14 4 5 E 15 12 13 9 6 F 22 10 10 14
Kita dapat menggunakan sintaks berikut untuk menerapkan fungsi scale() ke setiap variabel dalam bingkai data yang berisi string “starter” di nama kolom.
library (dplyr) #apply scale() function to each variable that contains 'starter' in the name df %>% mutate_at(vars(contains(' starter ')), ~ (scale(.) %>% as. vector )) team starter_points starter_assists bench_points bench_assists 1 A 0.2819668 -1.3180158 7 2 2 B 1.0338784 -1.0629159 7 5 3 C 0.8459005 0.2125832 9 5 4 D -1.4098342 1.2329825 14 4 5 E -1.0338784 0.7227828 13 9 6 F 0.2819668 0.2125832 10 14
Dengan menggunakan sintaks ini, kami dapat menerapkan fungsi scale() untuk menskalakan setiap kolom yang berisi “starter” sehingga nilainya sekarang memiliki rata-rata 0 dan standar deviasi 1.
Perhatikan bahwa kolom berikut telah diubah:
- titik_starter
- starter_bantuan
Semua kolom lainnya tetap tidak berubah.
Perhatikan juga bahwa kita dapat menerapkan fungsi apa pun yang kita inginkan menggunakan sintaksis ini.
Pada contoh sebelumnya, kami memilih untuk menskalakan setiap kolom dengan string “starter” di namanya.
Namun, kita dapat melakukan sesuatu yang lebih sederhana, seperti mengalikan nilainya dengan dua untuk setiap kolom dengan nama “starter”:
library (dplyr) #multiply values by two for each variable that contains 'starter' in the name df %>% mutate_at(vars(contains(' starter ')), ~ (. * 2 )) team starter_points starter_assists bench_points bench_assists 1 A 44 8 7 2 2 B 52 10 7 5 3 C 50 20 9 5 4 D 26 28 14 4 5 E 30 24 13 9 6 F 44 20 10 14
Perhatikan bahwa nilai kolom starter_points dan starter_assists telah dikalikan dua, sedangkan kolom lainnya tetap tidak berubah.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di dplyr:
Cara menghapus baris menggunakan dplyr
Cara memilih kolom berdasarkan indeks menggunakan dplyr
Cara memfilter baris yang berisi string tertentu menggunakan dplyr