mutate() adds new variables and preserves existing;
transmute() drops existing variables.
mutate(.data, ...) transmute(.data, ...)
| .data | A tbl. All main verbs are S3 generics and provide methods
for |
|---|---|
| ... | Name-value pairs of expressions. Use These arguments are automatically quoted and
evaluated in the context of the data
frame. They support unquoting and
splicing. See |
An object of the same class as .data.
+, - etc
log()
dense_rank(), min_rank(), percent_rank(), row_number(),
cume_dist(), ntile()
The three scoped variants of mutate() (mutate_all(),
mutate_if() and mutate_at()) and the three variants of
transmute() (transmute_all(), transmute_if(),
transmute_at()) make it easy to apply a transformation to a
selection of variables.
When applied to a data frame, row names are silently dropped. To preserve,
convert to an explicit variable with tibble::rownames_to_column().
Other single table verbs: arrange,
filter, select,
slice, summarise
# Newly created variables are available immediately mtcars %>% as_tibble() %>% mutate( cyl2 = cyl * 2, cyl4 = cyl2 * 2 )#> # A tibble: 32 × 13 #> mpg cyl disp hp drat wt qsec vs am gear carb cyl2 #> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 12 #> 2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 12 #> 3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 8 #> 4 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 12 #> 5 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 16 #> 6 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 12 #> 7 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 16 #> 8 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 8 #> 9 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 8 #> 10 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 12 #> # ... with 22 more rows, and 1 more variables: cyl4 <dbl># You can also use mutate() to remove variables and # modify existing variables mtcars %>% as_tibble() %>% mutate( mpg = NULL, disp = disp * 0.0163871 # convert to litres )#> # A tibble: 32 × 10 #> cyl disp hp drat wt qsec vs am gear carb #> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 6 2.621936 110 3.90 2.620 16.46 0 1 4 4 #> 2 6 2.621936 110 3.90 2.875 17.02 0 1 4 4 #> 3 4 1.769807 93 3.85 2.320 18.61 1 1 4 1 #> 4 6 4.227872 110 3.08 3.215 19.44 1 0 3 1 #> 5 8 5.899356 175 3.15 3.440 17.02 0 0 3 2 #> 6 6 3.687098 105 2.76 3.460 20.22 1 0 3 1 #> 7 8 5.899356 245 3.21 3.570 15.84 0 0 3 4 #> 8 4 2.403988 62 3.69 3.190 20.00 1 0 4 2 #> 9 4 2.307304 95 3.92 3.150 22.90 1 0 4 2 #> 10 6 2.746478 123 3.92 3.440 18.30 1 0 4 4 #> # ... with 22 more rows# window functions are useful for grouped mutates mtcars %>% group_by(cyl) %>% mutate(rank = min_rank(desc(mpg)))#> # A tibble: 32 × 12 #> # Groups: cyl [3] #> mpg cyl disp hp drat wt qsec vs am gear carb rank #> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int> #> 1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 2 #> 2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 2 #> 3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 8 #> 4 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 1 #> 5 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 2 #> 6 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 6 #> 7 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 11 #> 8 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 7 #> 9 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 8 #> 10 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 5 #> # ... with 22 more rows# see `vignette("window-functions")` for more details # You can drop variables by setting them to NULL mtcars %>% mutate(cyl = NULL)#> mpg disp hp drat wt qsec vs am gear carb #> 1 21.0 160.0 110 3.90 2.620 16.46 0 1 4 4 #> 2 21.0 160.0 110 3.90 2.875 17.02 0 1 4 4 #> 3 22.8 108.0 93 3.85 2.320 18.61 1 1 4 1 #> 4 21.4 258.0 110 3.08 3.215 19.44 1 0 3 1 #> 5 18.7 360.0 175 3.15 3.440 17.02 0 0 3 2 #> 6 18.1 225.0 105 2.76 3.460 20.22 1 0 3 1 #> 7 14.3 360.0 245 3.21 3.570 15.84 0 0 3 4 #> 8 24.4 146.7 62 3.69 3.190 20.00 1 0 4 2 #> 9 22.8 140.8 95 3.92 3.150 22.90 1 0 4 2 #> 10 19.2 167.6 123 3.92 3.440 18.30 1 0 4 4 #> 11 17.8 167.6 123 3.92 3.440 18.90 1 0 4 4 #> 12 16.4 275.8 180 3.07 4.070 17.40 0 0 3 3 #> 13 17.3 275.8 180 3.07 3.730 17.60 0 0 3 3 #> 14 15.2 275.8 180 3.07 3.780 18.00 0 0 3 3 #> 15 10.4 472.0 205 2.93 5.250 17.98 0 0 3 4 #> 16 10.4 460.0 215 3.00 5.424 17.82 0 0 3 4 #> 17 14.7 440.0 230 3.23 5.345 17.42 0 0 3 4 #> 18 32.4 78.7 66 4.08 2.200 19.47 1 1 4 1 #> 19 30.4 75.7 52 4.93 1.615 18.52 1 1 4 2 #> 20 33.9 71.1 65 4.22 1.835 19.90 1 1 4 1 #> 21 21.5 120.1 97 3.70 2.465 20.01 1 0 3 1 #> 22 15.5 318.0 150 2.76 3.520 16.87 0 0 3 2 #> 23 15.2 304.0 150 3.15 3.435 17.30 0 0 3 2 #> 24 13.3 350.0 245 3.73 3.840 15.41 0 0 3 4 #> 25 19.2 400.0 175 3.08 3.845 17.05 0 0 3 2 #> 26 27.3 79.0 66 4.08 1.935 18.90 1 1 4 1 #> 27 26.0 120.3 91 4.43 2.140 16.70 0 1 5 2 #> 28 30.4 95.1 113 3.77 1.513 16.90 1 1 5 2 #> 29 15.8 351.0 264 4.22 3.170 14.50 0 1 5 4 #> 30 19.7 145.0 175 3.62 2.770 15.50 0 1 5 6 #> 31 15.0 301.0 335 3.54 3.570 14.60 0 1 5 8 #> 32 21.4 121.0 109 4.11 2.780 18.60 1 1 4 2# mutate() vs transmute -------------------------- # mutate() keeps all existing variables mtcars %>% mutate(displ_l = disp / 61.0237)#> mpg cyl disp hp drat wt qsec vs am gear carb displ_l #> 1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 2.621932 #> 2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 2.621932 #> 3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 1.769804 #> 4 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 4.227866 #> 5 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 5.899347 #> 6 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 3.687092 #> 7 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 5.899347 #> 8 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 2.403984 #> 9 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 2.307300 #> 10 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 2.746474 #> 11 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 2.746474 #> 12 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 4.519556 #> 13 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 4.519556 #> 14 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 4.519556 #> 15 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 7.734700 #> 16 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 7.538055 #> 17 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 7.210313 #> 18 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 1.289663 #> 19 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 1.240502 #> 20 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 1.165121 #> 21 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 1.968088 #> 22 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 5.211090 #> 23 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 4.981671 #> 24 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 5.735477 #> 25 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 6.554830 #> 26 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 1.294579 #> 27 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 1.971365 #> 28 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 1.558411 #> 29 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 5.751864 #> 30 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 2.376126 #> 31 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 4.932510 #> 32 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 1.982836# transmute keeps only the variables you create mtcars %>% transmute(displ_l = disp / 61.0237)#> displ_l #> 1 2.621932 #> 2 2.621932 #> 3 1.769804 #> 4 4.227866 #> 5 5.899347 #> 6 3.687092 #> 7 5.899347 #> 8 2.403984 #> 9 2.307300 #> 10 2.746474 #> 11 2.746474 #> 12 4.519556 #> 13 4.519556 #> 14 4.519556 #> 15 7.734700 #> 16 7.538055 #> 17 7.210313 #> 18 1.289663 #> 19 1.240502 #> 20 1.165121 #> 21 1.968088 #> 22 5.211090 #> 23 4.981671 #> 24 5.735477 #> 25 6.554830 #> 26 1.294579 #> 27 1.971365 #> 28 1.558411 #> 29 5.751864 #> 30 2.376126 #> 31 4.932510 #> 32 1.982836