Description Usage Arguments Examples
change values of columns only in rows that satisfy the .if condition Note: you cannot create new columns with mutate_rows but only change values in selected rows of existing columns
1 | mutate_rows(.data, .if, ...)
|
.data |
the data |
.if |
a logical condition that selects rows, e.g. a=="B" |
... |
the command to mutate existing columns |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | ## Not run:
library(microbenchmark)
library(dplyr)
library(data.table)
library(dplyrExtras)
# create a data
set.seed(123456)
n = 10
df = data.frame(a= sample(1:3,n,replace=TRUE),
b= sample(1:100,n,replace=TRUE),
x=rnorm(n))
dt = as.data.table(df)
# different calls to mutate_rows
mutate_rows(df,a==3,y=100)
mutate_rows(tbl_df(df),a==1,x=200)
mutate_rows(as.tbl(df),a==1,x=300,b=400)
mutate_rows(dt,a==1 | a==2,x=400)
mutate_rows(group_by(dt,a),a==1 | a==2,x=mean(b))
mutate_rows(group_by(df,a),a==1 | a==2,x=mean(b))
# if you create a new column rows that don't
# match the if condition have an NA
mutate_rows(df,a==3,z=100)
# You can only have one if condition in a mutate_rows call
# So multiple changes require nesting or piping
library(magrittr)
df
mutate_rows(a==2,z=200)
# For historical reasons there is also still the synonym
# mutate_if. But not that dplyr 5.0 has introduced its own
# mutate_if function with quite different functionality
mutate_if(df,a==3,y=99)
# Small benchmark: compare with mutate + ifelse
n = 1e6
df = data.frame(a= sample(1:3,n,replace=TRUE),
b= sample(1:100,n,replace=TRUE),
x=rnorm(n))
microbenchmark(times = 5L,
mutate(df, x=ifelse(a==2,x+100,x)),
mutate(df, x=if_else(a==2,x+100,x)),
mutate_rows(df, a==2, x=x+100)
)
# mean
# ifelse 540.7145
# if_else 360.4928
# mutate_rows 114.3891
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.