Parfois, on souhaite appliquer une fonction à plusieurs colonnes de notre tableau, en fonction d’une condition. Pour cela, direction mutate_if(), du package {dplyr}.

Comme son nom l’indique, mutate_if effectue une modification si la condition est remplie. Les arguments sont :

  • Un tableau de données
  • La condition à remplir (le test effectué qui devra renvoyé TRUE)
  • La transformation à effectuer.
  • Et pour comprendre par l’exemple :

    
      library(dplyr)
      data("iris")
      str(iris)
      'data.frame': 150 obs. of  5 variables:
     $ Sepal.Length: num  5.1 4.9 4.7 4.6 ...
     $ Sepal.Width : num  3.5 3 3.2 3.1 3 ...
     $ Petal.Length: num  1.4 1.4 1.3 1.5 ...
     $ Petal.Width : num  0.2 0.2 0.2 0.2 ...
     $ Species     : Factor w/ 3 levels   ...
      new_iris <- mutate_if(iris, is.numeric, as.factor)
      str(new_iris)
      'data.frame':   150 obs. of  5 variables:
     $ Sepal.Length: Factor w/ 35 levels ...
     $ Sepal.Width : Factor w/ 23 levels ...
     $ Petal.Length: Factor w/ 43 levels ...
     $ Petal.Width : Factor w/ 22 levels ...
     $ Species     : Factor w/ 3 levels  ...
    

    À noter : il est possible d’intégrer ses propres fonctions de transformation. Par exemple, si l’on veut les mesures d’iris en millimètres, plutôt qu’en centimètres.

    
      mutate_if(iris, is.numeric, function(x){x * 100})