rdataframedplyriconvmutate

Can we avoid repeating the column name each time when using it in mutates


I use several mutate on the same column. How can we only use mutate once and without repeating the column name?

df <- data.frame(
  c1 = c("Élève", "Café", "Château", "Noël", "Crème")
)

df2 <- df %>% 
  mutate(c1 = trimws(c1)) %>%
  mutate(c1 = gsub("\\s+", " ", c1)) %>%
  mutate(c1 = gsub("\"", "", c1)) %>%
  mutate(c1 = iconv(toupper(c1), to = "ASCII//TRANSLIT"))
  

Solution

  • Place the pipeline within the mutate like this:

    df3 <- df %>%
      mutate(c1 = c1 %>%
        trimws %>%
        gsub("\\s+", " ", .) %>%
        gsub("\"", "", .) %>%
        toupper %>%
        iconv(to = "ASCII//TRANSLIT"))
    
    identical(df2, df3)
    ## [1] TRUE
    

    or

    df4 <- df %>%
      reframe(across(c1, . %>%
        trimws %>%
        gsub("\\s+", " ", .) %>%
        gsub("\"", "", .) %>%
        toupper %>%
        iconv(to = "ASCII//TRANSLIT")))
    
    identical(df2, df4)
    ## [1] TRUE