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 :
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})