mutate()

Con la función mutate() podemos computar tranformaciones de variables en un data frame. A menudo, tendremos la necesidad de crear nuevas variables que se calculan a partir de variables existentes,mutate() nos proporciona una interface clara para realizar este tipo de operaciones.

Así por ejemplo si deseamos calcular el ratio entre pressure y wind:

Echemos un vistazo al data frame storms:

> storms
Source: local data frame [6 x 4]

    storm  wind pressure       date
    (chr) (int)    (int)     (date)
1 Alberto   110     1007 2000-08-03
2    Alex    45     1009 1998-07-27
3 Allison    65     1005 1995-06-03
4     Ana    40     1013 1997-06-30
5  Arlene    50     1010 1999-06-11
6  Arthur    45     1010 1996-06-17

A continuación podemos crear una nueva varible ratio con el ratio entre la presión y el viento:

> mutate(storms, ratio = pressure/wind)
Source: local data frame [6 x 5]

    storm  wind pressure       date     ratio
    (chr) (int)    (int)     (date)     (dbl)
1 Alberto   110     1007 2000-08-03  9.154545
2    Alex    45     1009 1998-07-27 22.422222
3 Allison    65     1005 1995-06-03 15.461538
4     Ana    40     1013 1997-06-30 25.325000
5  Arlene    50     1010 1999-06-11 20.200000
6  Arthur    45     1010 1996-06-17 22.444444

La función mutate() nos permite encadenar varias expresiones en una misma sentencia:

> mutate(storms, ratio=pressure/wind, inverse=ratio^-1)
Source: local data frame [6 x 6]

    storm  wind pressure       date     ratio    inverse
    (chr) (int)    (int)     (date)     (dbl)      (dbl)
1 Alberto   110     1007 2000-08-03  9.154545 0.10923535
2    Alex    45     1009 1998-07-27 22.422222 0.04459861
3 Allison    65     1005 1995-06-03 15.461538 0.06467662
4     Ana    40     1013 1997-06-30 25.325000 0.03948667
5  Arlene    50     1010 1999-06-11 20.200000 0.04950495
6  Arthur    45     1010 1996-06-17 22.444444 0.04455446

Podemos utilizar funciones de otros paquetes como resultado de una nueva columna/variable, así por ejemplo si queremos calcular la distribución de frecuencias absolutas acumuladas de la variable wind podríamos utilizar la función cumsum() del paquete bas:

> mutate(storms, freq.acumulative = cumsum(wind))
Source: local data frame [6 x 5]

    storm  wind pressure       date freq.acumulative
    (chr) (int)    (int)     (date)            (int)
1 Alberto   110     1007 2000-08-03              110
2    Alex    45     1009 1998-07-27              155
3 Allison    65     1005 1995-06-03              220
4     Ana    40     1013 1997-06-30              260
5  Arlene    50     1010 1999-06-11              310
6  Arthur    45     1010 1996-06-17              355