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

Tambahkan komentar

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