Dplyr: so mutieren sie eine variable, wenn die spalte eine zeichenfolge enthält


Sie können die folgende grundlegende Syntax in dplyr verwenden, um eine Variable zu ändern, wenn eine Spalte eine bestimmte Zeichenfolge enthält:

 library (dplyr)

df %>% mutate_at(vars(contains(' starter ')), ~ (scale(.) %>% as. vector ))

Diese spezielle Syntax wendet die Funktion „scale()“ auf jede Variable im Datenrahmen an, die die Zeichenfolge „starter“ im Spaltennamen enthält.

Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.

Beispiel: Mutieren Sie die Variable, wenn die Spalte eine Zeichenfolge enthält

Angenommen, wir haben den folgenden Datenrahmen in 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

Mit der folgenden Syntax können wir die Funktion „scale()“ auf jede Variable im Datenrahmen anwenden, die die Zeichenfolge „starter“ im Spaltennamen enthält.

 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

Mit dieser Syntax konnten wir die Funktion „scale()“ anwenden, um jede Spalte, die „starter“ enthält, so zu skalieren, dass ihre Werte nun einen Mittelwert von 0 und eine Standardabweichung von 1 haben.

Beachten Sie, dass die folgenden Spalten geändert wurden:

  • starterpunkte
  • starter_assists

Alle anderen Spalten blieben unverändert.

Beachten Sie auch, dass wir mit dieser Syntax jede gewünschte Funktion anwenden können.

Im vorherigen Beispiel haben wir uns dafür entschieden, jede Spalte mit der Zeichenfolge „starter“ im Namen zu skalieren.

Wir könnten jedoch etwas Einfacheres tun, wie zum Beispiel die Werte für jede Spalte mit „starter“ im Namen mit zwei multiplizieren:

 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

Beachten Sie, dass die Werte der Spalten starter_points und starter_assists mit zwei multipliziert wurden, während alle anderen Spalten unverändert blieben.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Aufgaben in dplyr ausführen:

So löschen Sie Zeilen mit dplyr
So wählen Sie Spalten nach Index mit dplyr aus
So filtern Sie Zeilen, die eine bestimmte Zeichenfolge enthalten, mit dplyr

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert