Dplyr: 列に文字列が含まれている場合に変数を変更する方法
列に特定の文字列が含まれている場合は、 dplyrで次の基本構文を使用して変数を変更できます。
library (dplyr) df %>% mutate_at(vars(contains(' starter ')), ~ (scale(.) %>% as. vector ))
この特定の構文は、列名に文字列「starter」を含むデータ フレーム内の各変数にscale()関数を適用します。
次の例は、この構文を実際に使用する方法を示しています。
例: 列に文字列が含まれている場合に変数を変更します。
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
次の構文を使用して、列名に文字列「starter」を含むデータ フレーム内の各変数にscale()関数を適用できます。
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
この構文を使用すると、 scale()関数を適用して、「スターター」を含む各列をスケールし、値の平均が 0、標準偏差が 1 になるようにすることができました。
次の列が変更されていることに注意してください。
- スターターポイント
- スターターアシスト
他のすべての列は変更されませんでした。
また、この構文を使用して必要な関数を適用できることにも注意してください。
前の例では、名前に文字列「starter」を使用して各列をスケールすることを選択しました。
ただし、名前に「starter」を含む各列の値を 2 で乗算するなど、もっと単純なこともできます。
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
starter_points 列とstarter_assists列の値は 2 倍になっていますが、他のすべての列は変更されていないことに注意してください。
追加リソース
次のチュートリアルでは、dplyr で他の一般的なタスクを実行する方法を説明します。
dplyrを使用して行を削除する方法
dplyrを使用してインデックスによって列を選択する方法
dplyrを使用して特定の文字列を含む行をフィルタリングする方法