作用域动词( _if
、 _at
、 _all
)已被现有动词中的 pick()
或 across()
取代。有关详细信息,请参阅vignette("colwise")
。
mutate()
和 transmute()
的 scoped 变体可以轻松地将相同的转换应用于多个变量。有以下三种变体:
-
_all 影响每个变量
-
_at 影响使用字符向量或 vars() 选择的变量
-
_if 影响使用谓词函数选择的变量:
用法
mutate_all(.tbl, .funs, ...)
mutate_if(.tbl, .predicate, .funs, ...)
mutate_at(.tbl, .vars, .funs, ..., .cols = NULL)
transmute_all(.tbl, .funs, ...)
transmute_if(.tbl, .predicate, .funs, ...)
transmute_at(.tbl, .vars, .funs, ..., .cols = NULL)
参数
- .tbl
-
tbl
对象。 - .funs
-
函数
fun
、 quosure 样式 lambda~ fun(.)
或任一形式的列表。 - ...
-
.funs
中函数调用的附加参数。这些仅在 tidy dots 支持下评估一次。 - .predicate
-
应用于列或逻辑向量的谓词函数。选择
.predicate
为或返回TRUE
的变量。该参数传递给rlang::as_function()
,因此支持quosure-style lambda 函数和表示函数名称的字符串。 - .vars
-
由
vars()
生成的列列表、列名称的字符向量、列位置的数值向量或NULL
。 - .cols
-
此参数已重命名为
.vars
以符合 dplyr 的术语,并且已弃用。
对变量进行分组
如果应用于分组的 tibble,则这些操作不会应用于分组变量。该行为取决于选择是隐式的(all
和 if
选择)还是显式的(at
选择)。
-
对
mutate_at()
和transmute_at()
中的显式选择所覆盖的变量进行分组始终是一个错误。将-group_cols()
添加到vars()
选择中以避免出现这种情况:data %>% mutate_at(vars(-group_cols(), ...), myoperation)
或者从列名的字符向量中删除
group_vars()
:nms <- setdiff(nms, group_vars(data)) data %>% mutate_at(vars, myoperation)
-
mutate_all()
、transmute_all()
、mutate_if()
和transmute_if()
忽略隐式选择覆盖的分组变量。
命名
新列的名称源自输入变量的名称和函数的名称。
-
如果只有一个未命名函数(即,如果
.funs
是长度为 1 的未命名列表),则使用输入变量的名称来命名新列; -
对于
_at
函数,如果只有一个未命名变量(即,如果.vars
的形式为vars(a_single_column)
)并且.funs
的长度大于 1,则使用函数的名称来命名新列; -
否则,通过连接输入变量的名称和函数的名称来创建新名称,并用下划线
"_"
分隔。
.funs
参数可以是命名或未命名列表。如果函数未命名并且无法自动派生名称,则使用 "fn#" 形式的名称。同样,vars()
接受命名和未命名参数。如果 .vars
中的变量被命名,则会创建一个具有该名称的新列。
新列中的名称冲突使用唯一的后缀消除歧义。
例子
iris <- as_tibble(iris)
# All variants can be passed functions and additional arguments,
# purrr-style. The _at() variants directly support strings. Here
# we'll scale the variables `height` and `mass`:
scale2 <- function(x, na.rm = FALSE) (x - mean(x, na.rm = na.rm)) / sd(x, na.rm)
starwars %>% mutate_at(c("height", "mass"), scale2)
#> # A tibble: 87 × 14
#> name height mass hair_color skin_color eye_color birth_year sex
#> <chr> <dbl> <dbl> <chr> <chr> <chr> <dbl> <chr>
#> 1 Luke Sky… NA NA blond fair blue 19 male
#> 2 C-3PO NA NA NA gold yellow 112 none
#> 3 R2-D2 NA NA NA white, bl… red 33 none
#> 4 Darth Va… NA NA none white yellow 41.9 male
#> 5 Leia Org… NA NA brown light brown 19 fema…
#> 6 Owen Lars NA NA brown, gr… light blue 52 male
#> 7 Beru Whi… NA NA brown light blue 47 fema…
#> 8 R5-D4 NA NA NA white, red red NA none
#> 9 Biggs Da… NA NA black light brown 24 male
#> 10 Obi-Wan … NA NA auburn, w… fair blue-gray 57 male
#> # ℹ 77 more rows
#> # ℹ 6 more variables: gender <chr>, homeworld <chr>, species <chr>,
#> # films <list>, vehicles <list>, starships <list>
# ->
starwars %>% mutate(across(c("height", "mass"), scale2))
#> # A tibble: 87 × 14
#> name height mass hair_color skin_color eye_color birth_year sex
#> <chr> <dbl> <dbl> <chr> <chr> <chr> <dbl> <chr>
#> 1 Luke Sky… NA NA blond fair blue 19 male
#> 2 C-3PO NA NA NA gold yellow 112 none
#> 3 R2-D2 NA NA NA white, bl… red 33 none
#> 4 Darth Va… NA NA none white yellow 41.9 male
#> 5 Leia Org… NA NA brown light brown 19 fema…
#> 6 Owen Lars NA NA brown, gr… light blue 52 male
#> 7 Beru Whi… NA NA brown light blue 47 fema…
#> 8 R5-D4 NA NA NA white, red red NA none
#> 9 Biggs Da… NA NA black light brown 24 male
#> 10 Obi-Wan … NA NA auburn, w… fair blue-gray 57 male
#> # ℹ 77 more rows
#> # ℹ 6 more variables: gender <chr>, homeworld <chr>, species <chr>,
#> # films <list>, vehicles <list>, starships <list>
# You can pass additional arguments to the function:
starwars %>% mutate_at(c("height", "mass"), scale2, na.rm = TRUE)
#> # A tibble: 87 × 14
#> name height mass hair_color skin_color eye_color birth_year sex
#> <chr> <dbl> <dbl> <chr> <chr> <chr> <dbl> <chr>
#> 1 Luke … -0.0678 -0.120 blond fair blue 19 male
#> 2 C-3PO -0.212 -0.132 NA gold yellow 112 none
#> 3 R2-D2 -2.25 -0.385 NA white, bl… red 33 none
#> 4 Darth… 0.795 0.228 none white yellow 41.9 male
#> 5 Leia … -0.701 -0.285 brown light brown 19 fema…
#> 6 Owen … 0.105 0.134 brown, gr… light blue 52 male
#> 7 Beru … -0.269 -0.132 brown light blue 47 fema…
#> 8 R5-D4 -2.22 -0.385 NA white, red red NA none
#> 9 Biggs… 0.249 -0.0786 black light brown 24 male
#> 10 Obi-W… 0.220 -0.120 auburn, w… fair blue-gray 57 male
#> # ℹ 77 more rows
#> # ℹ 6 more variables: gender <chr>, homeworld <chr>, species <chr>,
#> # films <list>, vehicles <list>, starships <list>
starwars %>% mutate_at(c("height", "mass"), ~scale2(., na.rm = TRUE))
#> # A tibble: 87 × 14
#> name height mass hair_color skin_color eye_color birth_year sex
#> <chr> <dbl> <dbl> <chr> <chr> <chr> <dbl> <chr>
#> 1 Luke … -0.0678 -0.120 blond fair blue 19 male
#> 2 C-3PO -0.212 -0.132 NA gold yellow 112 none
#> 3 R2-D2 -2.25 -0.385 NA white, bl… red 33 none
#> 4 Darth… 0.795 0.228 none white yellow 41.9 male
#> 5 Leia … -0.701 -0.285 brown light brown 19 fema…
#> 6 Owen … 0.105 0.134 brown, gr… light blue 52 male
#> 7 Beru … -0.269 -0.132 brown light blue 47 fema…
#> 8 R5-D4 -2.22 -0.385 NA white, red red NA none
#> 9 Biggs… 0.249 -0.0786 black light brown 24 male
#> 10 Obi-W… 0.220 -0.120 auburn, w… fair blue-gray 57 male
#> # ℹ 77 more rows
#> # ℹ 6 more variables: gender <chr>, homeworld <chr>, species <chr>,
#> # films <list>, vehicles <list>, starships <list>
# ->
starwars %>% mutate(across(c("height", "mass"), ~ scale2(.x, na.rm = TRUE)))
#> # A tibble: 87 × 14
#> name height mass hair_color skin_color eye_color birth_year sex
#> <chr> <dbl> <dbl> <chr> <chr> <chr> <dbl> <chr>
#> 1 Luke … -0.0678 -0.120 blond fair blue 19 male
#> 2 C-3PO -0.212 -0.132 NA gold yellow 112 none
#> 3 R2-D2 -2.25 -0.385 NA white, bl… red 33 none
#> 4 Darth… 0.795 0.228 none white yellow 41.9 male
#> 5 Leia … -0.701 -0.285 brown light brown 19 fema…
#> 6 Owen … 0.105 0.134 brown, gr… light blue 52 male
#> 7 Beru … -0.269 -0.132 brown light blue 47 fema…
#> 8 R5-D4 -2.22 -0.385 NA white, red red NA none
#> 9 Biggs… 0.249 -0.0786 black light brown 24 male
#> 10 Obi-W… 0.220 -0.120 auburn, w… fair blue-gray 57 male
#> # ℹ 77 more rows
#> # ℹ 6 more variables: gender <chr>, homeworld <chr>, species <chr>,
#> # films <list>, vehicles <list>, starships <list>
# You can also supply selection helpers to _at() functions but you have
# to quote them with vars():
iris %>% mutate_at(vars(matches("Sepal")), log)
#> # A tibble: 150 × 5
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <dbl> <dbl> <dbl> <dbl> <fct>
#> 1 1.63 1.25 1.4 0.2 setosa
#> 2 1.59 1.10 1.4 0.2 setosa
#> 3 1.55 1.16 1.3 0.2 setosa
#> 4 1.53 1.13 1.5 0.2 setosa
#> 5 1.61 1.28 1.4 0.2 setosa
#> 6 1.69 1.36 1.7 0.4 setosa
#> 7 1.53 1.22 1.4 0.3 setosa
#> 8 1.61 1.22 1.5 0.2 setosa
#> 9 1.48 1.06 1.4 0.2 setosa
#> 10 1.59 1.13 1.5 0.1 setosa
#> # ℹ 140 more rows
iris %>% mutate(across(matches("Sepal"), log))
#> # A tibble: 150 × 5
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <dbl> <dbl> <dbl> <dbl> <fct>
#> 1 1.63 1.25 1.4 0.2 setosa
#> 2 1.59 1.10 1.4 0.2 setosa
#> 3 1.55 1.16 1.3 0.2 setosa
#> 4 1.53 1.13 1.5 0.2 setosa
#> 5 1.61 1.28 1.4 0.2 setosa
#> 6 1.69 1.36 1.7 0.4 setosa
#> 7 1.53 1.22 1.4 0.3 setosa
#> 8 1.61 1.22 1.5 0.2 setosa
#> 9 1.48 1.06 1.4 0.2 setosa
#> 10 1.59 1.13 1.5 0.1 setosa
#> # ℹ 140 more rows
# The _if() variants apply a predicate function (a function that
# returns TRUE or FALSE) to determine the relevant subset of
# columns. Here we divide all the numeric columns by 100:
starwars %>% mutate_if(is.numeric, scale2, na.rm = TRUE)
#> # A tibble: 87 × 14
#> name height mass hair_color skin_color eye_color birth_year sex
#> <chr> <dbl> <dbl> <chr> <chr> <chr> <dbl> <chr>
#> 1 Luke … -0.0678 -0.120 blond fair blue -0.443 male
#> 2 C-3PO -0.212 -0.132 NA gold yellow 0.158 none
#> 3 R2-D2 -2.25 -0.385 NA white, bl… red -0.353 none
#> 4 Darth… 0.795 0.228 none white yellow -0.295 male
#> 5 Leia … -0.701 -0.285 brown light brown -0.443 fema…
#> 6 Owen … 0.105 0.134 brown, gr… light blue -0.230 male
#> 7 Beru … -0.269 -0.132 brown light blue -0.262 fema…
#> 8 R5-D4 -2.22 -0.385 NA white, red red NA none
#> 9 Biggs… 0.249 -0.0786 black light brown -0.411 male
#> 10 Obi-W… 0.220 -0.120 auburn, w… fair blue-gray -0.198 male
#> # ℹ 77 more rows
#> # ℹ 6 more variables: gender <chr>, homeworld <chr>, species <chr>,
#> # films <list>, vehicles <list>, starships <list>
starwars %>% mutate(across(where(is.numeric), ~ scale2(.x, na.rm = TRUE)))
#> # A tibble: 87 × 14
#> name height mass hair_color skin_color eye_color birth_year sex
#> <chr> <dbl> <dbl> <chr> <chr> <chr> <dbl> <chr>
#> 1 Luke … -0.0678 -0.120 blond fair blue -0.443 male
#> 2 C-3PO -0.212 -0.132 NA gold yellow 0.158 none
#> 3 R2-D2 -2.25 -0.385 NA white, bl… red -0.353 none
#> 4 Darth… 0.795 0.228 none white yellow -0.295 male
#> 5 Leia … -0.701 -0.285 brown light brown -0.443 fema…
#> 6 Owen … 0.105 0.134 brown, gr… light blue -0.230 male
#> 7 Beru … -0.269 -0.132 brown light blue -0.262 fema…
#> 8 R5-D4 -2.22 -0.385 NA white, red red NA none
#> 9 Biggs… 0.249 -0.0786 black light brown -0.411 male
#> 10 Obi-W… 0.220 -0.120 auburn, w… fair blue-gray -0.198 male
#> # ℹ 77 more rows
#> # ℹ 6 more variables: gender <chr>, homeworld <chr>, species <chr>,
#> # films <list>, vehicles <list>, starships <list>
# mutate_if() is particularly useful for transforming variables from
# one type to another
iris %>% mutate_if(is.factor, as.character)
#> # A tibble: 150 × 5
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 5.1 3.5 1.4 0.2 setosa
#> 2 4.9 3 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 3.1 1.5 0.2 setosa
#> 5 5 3.6 1.4 0.2 setosa
#> 6 5.4 3.9 1.7 0.4 setosa
#> 7 4.6 3.4 1.4 0.3 setosa
#> 8 5 3.4 1.5 0.2 setosa
#> 9 4.4 2.9 1.4 0.2 setosa
#> 10 4.9 3.1 1.5 0.1 setosa
#> # ℹ 140 more rows
iris %>% mutate_if(is.double, as.integer)
#> # A tibble: 150 × 5
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <int> <int> <int> <int> <fct>
#> 1 5 3 1 0 setosa
#> 2 4 3 1 0 setosa
#> 3 4 3 1 0 setosa
#> 4 4 3 1 0 setosa
#> 5 5 3 1 0 setosa
#> 6 5 3 1 0 setosa
#> 7 4 3 1 0 setosa
#> 8 5 3 1 0 setosa
#> 9 4 2 1 0 setosa
#> 10 4 3 1 0 setosa
#> # ℹ 140 more rows
# ->
iris %>% mutate(across(where(is.factor), as.character))
#> # A tibble: 150 × 5
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 5.1 3.5 1.4 0.2 setosa
#> 2 4.9 3 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 3.1 1.5 0.2 setosa
#> 5 5 3.6 1.4 0.2 setosa
#> 6 5.4 3.9 1.7 0.4 setosa
#> 7 4.6 3.4 1.4 0.3 setosa
#> 8 5 3.4 1.5 0.2 setosa
#> 9 4.4 2.9 1.4 0.2 setosa
#> 10 4.9 3.1 1.5 0.1 setosa
#> # ℹ 140 more rows
iris %>% mutate(across(where(is.double), as.integer))
#> # A tibble: 150 × 5
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <int> <int> <int> <int> <fct>
#> 1 5 3 1 0 setosa
#> 2 4 3 1 0 setosa
#> 3 4 3 1 0 setosa
#> 4 4 3 1 0 setosa
#> 5 5 3 1 0 setosa
#> 6 5 3 1 0 setosa
#> 7 4 3 1 0 setosa
#> 8 5 3 1 0 setosa
#> 9 4 2 1 0 setosa
#> 10 4 3 1 0 setosa
#> # ℹ 140 more rows
# Multiple transformations ----------------------------------------
# If you want to apply multiple transformations, pass a list of
# functions. When there are multiple functions, they create new
# variables instead of modifying the variables in place:
iris %>% mutate_if(is.numeric, list(scale2, log))
#> # A tibble: 150 × 13
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <dbl> <dbl> <dbl> <dbl> <fct>
#> 1 5.1 3.5 1.4 0.2 setosa
#> 2 4.9 3 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 3.1 1.5 0.2 setosa
#> 5 5 3.6 1.4 0.2 setosa
#> 6 5.4 3.9 1.7 0.4 setosa
#> 7 4.6 3.4 1.4 0.3 setosa
#> 8 5 3.4 1.5 0.2 setosa
#> 9 4.4 2.9 1.4 0.2 setosa
#> 10 4.9 3.1 1.5 0.1 setosa
#> # ℹ 140 more rows
#> # ℹ 8 more variables: Sepal.Length_fn1 <dbl>, Sepal.Width_fn1 <dbl>,
#> # Petal.Length_fn1 <dbl>, Petal.Width_fn1 <dbl>,
#> # Sepal.Length_fn2 <dbl>, Sepal.Width_fn2 <dbl>,
#> # Petal.Length_fn2 <dbl>, Petal.Width_fn2 <dbl>
iris %>% mutate_if(is.numeric, list(~scale2(.), ~log(.)))
#> # A tibble: 150 × 13
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <dbl> <dbl> <dbl> <dbl> <fct>
#> 1 5.1 3.5 1.4 0.2 setosa
#> 2 4.9 3 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 3.1 1.5 0.2 setosa
#> 5 5 3.6 1.4 0.2 setosa
#> 6 5.4 3.9 1.7 0.4 setosa
#> 7 4.6 3.4 1.4 0.3 setosa
#> 8 5 3.4 1.5 0.2 setosa
#> 9 4.4 2.9 1.4 0.2 setosa
#> 10 4.9 3.1 1.5 0.1 setosa
#> # ℹ 140 more rows
#> # ℹ 8 more variables: Sepal.Length_scale2 <dbl>,
#> # Sepal.Width_scale2 <dbl>, Petal.Length_scale2 <dbl>,
#> # Petal.Width_scale2 <dbl>, Sepal.Length_log <dbl>,
#> # Sepal.Width_log <dbl>, Petal.Length_log <dbl>, Petal.Width_log <dbl>
iris %>% mutate_if(is.numeric, list(scale = scale2, log = log))
#> # A tibble: 150 × 13
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <dbl> <dbl> <dbl> <dbl> <fct>
#> 1 5.1 3.5 1.4 0.2 setosa
#> 2 4.9 3 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 3.1 1.5 0.2 setosa
#> 5 5 3.6 1.4 0.2 setosa
#> 6 5.4 3.9 1.7 0.4 setosa
#> 7 4.6 3.4 1.4 0.3 setosa
#> 8 5 3.4 1.5 0.2 setosa
#> 9 4.4 2.9 1.4 0.2 setosa
#> 10 4.9 3.1 1.5 0.1 setosa
#> # ℹ 140 more rows
#> # ℹ 8 more variables: Sepal.Length_scale <dbl>, Sepal.Width_scale <dbl>,
#> # Petal.Length_scale <dbl>, Petal.Width_scale <dbl>,
#> # Sepal.Length_log <dbl>, Sepal.Width_log <dbl>,
#> # Petal.Length_log <dbl>, Petal.Width_log <dbl>
# ->
iris %>%
as_tibble() %>%
mutate(across(where(is.numeric), list(scale = scale2, log = log)))
#> # A tibble: 150 × 13
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <dbl> <dbl> <dbl> <dbl> <fct>
#> 1 5.1 3.5 1.4 0.2 setosa
#> 2 4.9 3 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 3.1 1.5 0.2 setosa
#> 5 5 3.6 1.4 0.2 setosa
#> 6 5.4 3.9 1.7 0.4 setosa
#> 7 4.6 3.4 1.4 0.3 setosa
#> 8 5 3.4 1.5 0.2 setosa
#> 9 4.4 2.9 1.4 0.2 setosa
#> 10 4.9 3.1 1.5 0.1 setosa
#> # ℹ 140 more rows
#> # ℹ 8 more variables: Sepal.Length_scale <dbl>, Sepal.Length_log <dbl>,
#> # Sepal.Width_scale <dbl>, Sepal.Width_log <dbl>,
#> # Petal.Length_scale <dbl>, Petal.Length_log <dbl>,
#> # Petal.Width_scale <dbl>, Petal.Width_log <dbl>
# When there's only one function in the list, it modifies existing
# variables in place. Give it a name to instead create new variables:
iris %>% mutate_if(is.numeric, list(scale2))
#> # A tibble: 150 × 5
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <dbl> <dbl> <dbl> <dbl> <fct>
#> 1 -0.898 1.02 -1.34 -1.31 setosa
#> 2 -1.14 -0.132 -1.34 -1.31 setosa
#> 3 -1.38 0.327 -1.39 -1.31 setosa
#> 4 -1.50 0.0979 -1.28 -1.31 setosa
#> 5 -1.02 1.25 -1.34 -1.31 setosa
#> 6 -0.535 1.93 -1.17 -1.05 setosa
#> 7 -1.50 0.786 -1.34 -1.18 setosa
#> 8 -1.02 0.786 -1.28 -1.31 setosa
#> 9 -1.74 -0.361 -1.34 -1.31 setosa
#> 10 -1.14 0.0979 -1.28 -1.44 setosa
#> # ℹ 140 more rows
iris %>% mutate_if(is.numeric, list(scale = scale2))
#> # A tibble: 150 × 9
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <dbl> <dbl> <dbl> <dbl> <fct>
#> 1 5.1 3.5 1.4 0.2 setosa
#> 2 4.9 3 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 3.1 1.5 0.2 setosa
#> 5 5 3.6 1.4 0.2 setosa
#> 6 5.4 3.9 1.7 0.4 setosa
#> 7 4.6 3.4 1.4 0.3 setosa
#> 8 5 3.4 1.5 0.2 setosa
#> 9 4.4 2.9 1.4 0.2 setosa
#> 10 4.9 3.1 1.5 0.1 setosa
#> # ℹ 140 more rows
#> # ℹ 4 more variables: Sepal.Length_scale <dbl>, Sepal.Width_scale <dbl>,
#> # Petal.Length_scale <dbl>, Petal.Width_scale <dbl>
相关用法
- R dplyr mutate-joins 变异连接
- R dplyr mutate 创建、修改和删除列
- R dplyr group_trim 修剪分组结构
- R dplyr slice 使用行的位置对行进行子集化
- R dplyr copy_to 将本地数据帧复制到远程src
- R dplyr sample_n 从表中采样 n 行
- R dplyr consecutive_id 为连续组合生成唯一标识符
- R dplyr row_number 整数排名函数
- R dplyr band_members 乐队成员
- R dplyr nth 从向量中提取第一个、最后一个或第 n 个值
- R dplyr coalesce 找到第一个非缺失元素
- R dplyr group_split 按组分割 DataFrame
- R dplyr order_by 用于排序窗口函数输出的辅助函数
- R dplyr context 有关“当前”组或变量的信息
- R dplyr percent_rank 比例排名函数
- R dplyr recode 重新编码值
- R dplyr starwars 星球大战人物
- R dplyr desc 降序
- R dplyr between 检测值落在指定范围内的位置
- R dplyr cumall 任何、全部和平均值的累积版本
- R dplyr group_map 对每个组应用一个函数
- R dplyr do 做任何事情
- R dplyr nest_join 嵌套连接
- R dplyr pull 提取单列
- R dplyr group_by_all 按选择的变量进行分组
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Mutate multiple columns。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。