Dplyr rename(): Spalten umbenennen

Die Funktionen rename() und rename_with() dienen dazu, die Namen von Variablen zu ändern. Mit rename() werden einzelne Variablen umbenannt, mit rename_with() werden die Namen mithilfe von Funktionen geändert. Diese Funktionen wirken sich ausschließlich auf die Namen der Spalten (Variablen) aus. Die Reihenfolge der Spalten bleibt unverändert.

In diesem Kapitel arbeiten wir mit Daten, die wir mit folgendem Befehl direkt in R erzeugen:

my_data <- tibble(Var1 = c(NA, 5, 9, 5, 3, 4),
                  Var2 = c(1, NA, 3, 6, 1, 12),
                  Var3 = c("Ja", "Nej", NA, "Ja", "Ja", "Ja"),
                  Var4 = rnorm(6), # erzeugt 6 normalverteilte Zufallswerte
                  Var5 = letters[1:6]) # die ersten 6 Buchstaben des Alphabets
my_data
   Var1  Var2 Var3    Var4 Var5
     NA     1 Ja    -1.13  a
      5    NA Nej   -0.144 b
      9     3 NA    -0.114 c
      5     6 Ja    -0.343 d
      3     1 Ja    -1.08  e
      4    12 Ja     0.914 f

Wir benennen Var1 und Var2 in Variabel1 bzw. Variabel2 um. Beachten Sie, dass zuerst der neue Variablenname angegeben wird, gefolgt von einem Gleichheitszeichen und dem alten Variablennamen.

my_data |>
  rename(Variabel1=Var1,
         Variabel2=Var2)
  Variabel1 Variabel2 Var3    Var4 Var5
         NA         1 Ja    -1.13  a
          5        NA Nej   -0.144 b
          9         3 NA    -0.114 c
          5         6 Ja    -0.343 d
          3         1 Ja    -1.08  e
          4        12 Ja     0.914 f

Mit rename_with() können wir eine Funktion auf die Variablennamen anwenden. Im nächsten Beispiel schreiben wir alle Variablennamen mit der Funktion toupper() in Großbuchstaben:

my_data |>
  rename_with(toupper)
   VAR1  VAR2 VAR3    VAR4 VAR5
     NA     1 Ja    -1.13  a
      5    NA Nej   -0.144 b
      9     3 NA    -0.114 c
      5     6 Ja    -0.343 d
      3     1 Ja    -1.08  e
      4    12 Ja     0.914 f

Mit tolower() wandeln Sie die Namen stattdessen in Kleinbuchstaben um.

Sie können rename_with() mithilfe von tidy-select gezielt auf bestimmte Spalten anwenden. Im nächsten Beispiel wandeln wir einen Variablennamen nur dann in Großbuchstaben um, wenn er die Ziffer 4 enthält:

my_data |>
  rename_with(toupper, contains("4"))
   Var1  Var2 Var3    VAR4 Var5
     NA     1 Ja    -1.13  a
      5    NA Nej   -0.144 b
      9     3 NA    -0.114 c
      5     6 Ja    -0.343 d
      3     1 Ja    -1.08  e
      4    12 Ja     0.914 f

Die übrigen tidy-select-Funktionen wurden im Kapitel dplyr select() besprochen.

Variablennamen in Base R ändern

Base R bietet viele nützliche Funktionen, um Variablennamen zu ändern. Jeder Data Frame besitzt ein Attribut namens colnames, das die Variablennamen enthält. Sie können colnames mit folgendem Befehl ausgeben:

colnames(my_data)
"Var1" "Var2" "Var3" "Var4" "Var5"

Die Variablennamen werden also als Textvektor ausgegeben, den wir nach Belieben bearbeiten können. Beispielsweise können wir jedem Variablennamen mit folgendem Befehl das Präfix "ny_" voranstellen:

## Die folgenden Beispiele sind identisch
colnames(my_data) <- paste0("ny_", colnames(my_data))
my_data
  ny_Var1 ny_Var2 ny_Var3 ny_Var4 ny_Var5
       NA       1 Ja      -0.573  a
        5      NA Nej     -0.471  b
        9       3 NA      -0.139  c
        5       6 Ja       0.0464 d
        3       1 Ja       1.07   e
        4      12 Ja      -1.85   f

Wir können eine Zeichenkette in allen Variablennamen ersetzen. Hier ersetzen wir "Var" durch "Variabel_":

colnames(my_data) <- str_replace(names(my_data), "Var", "Variabel_")
my_data
  Variabel_1 Variabel_2 Variabel_3 Variabel_4 Variabel_5
          NA          1 Ja              0.598 a
           5         NA Nej            -0.348 b
           9          3 NA              1.09  c
           5          6 Ja             -0.237 d
           3          1 Ja              1.08  e
           4         12 Ja             -1.74  f