Dplyr rename(): Gi nytt navn til kolonner

Funksjonene rename() og rename_with() brukes til å endre navnet på variabler. Med rename() endres navnet på enkeltvariabler, og med rename_with() endres navnene ved hjelp av funksjoner. Disse funksjonene påvirker bare navnet på kolonner (variabler). Rekkefølgen på kolonnene påvirkes ikke.

I dette kapitlet arbeider vi med data som vi genererer direkte i R, med følgende kommando:

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), # genererer 6 tilfeldige verdier fra en normalfordeling
                  Var5 = letters[1:6]) # de 6 første bokstavene i alfabetet
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

Vi gir Var1 og Var2 nye navn, henholdsvis Variabel1 og Variabel2. Merk at det nye variabelnavnet angis først, etterfulgt av likhetstegn og det gamle variabelnavnet.

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

Med rename_with() kan vi bruke en funksjon på variabelnavnene. I neste eksempel gjør vi alle variabelnavn om til store bokstaver med funksjonen toupper():

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

Med tolower() gjør du i stedet navnene om til små bokstaver.

Du kan rette rename_with() mot bestemte kolonner ved hjelp av tidy-select. I neste eksempel konverterer vi alle variabelnavn til store bokstaver dersom variabelnavnet inneholder sifferet 4:

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

De andre tidy-select-funksjonene ble gjennomgått i kapitlet dplyr select().

Endre variabelnavn med base R

Det finnes mange nyttige funksjoner i base R for å endre variabelnavn. Hver dataframe har et attributt kalt colnames, som inneholder variabelnavnene. Du kan skrive ut colnames med følgende kommando:

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

Det betyr at variabelnavnene skrives ut som en tekstvektor, som vi kan manipulere etter eget ønske. Vi kan for eksempel legge til prefikset "ny_" foran hvert variabelnavn, med følgende kommando:

## Følgende eksempler er identiske
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

Vi kan erstatte en tekststreng i alle variabelnavn. Her erstatter vi "Var" med "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