当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R recipes step_mutate_at 使用 dplyr 改变多列


step_mutate_at() 创建配方步骤的规范,该步骤将通过 dplyr::mutate_at() 使用通用函数修改所选变量。

用法

step_mutate_at(
  recipe,
  ...,
  fn,
  role = "predictor",
  trained = FALSE,
  inputs = NULL,
  skip = FALSE,
  id = rand_id("mutate_at")
)

参数

recipe

一个菜谱对象。该步骤将添加到此配方的操作序列中。

...

一个或多个选择器函数用于为此步骤选择变量。有关更多详细信息,请参阅selections()

fn

函数 fun、quosure 风格 lambda `~ fun(.)` 或任一形式的列表。 (参见dplyr::mutate_at())。请注意,该参数必须命名。

role

对于此步骤创建的模型项,应为其分配什么分析角色?默认情况下,此步骤根据原始变量创建的新列将用作模型中的预测变量。

trained

指示预处理数量是否已估计的逻辑。

inputs

prep() 填充的列名称向量。

skip

一个合乎逻辑的。当bake() 烘焙食谱时是否应该跳过此步骤?虽然所有操作都是在 prep() 运行时烘焙的,但某些操作可能无法对新数据进行(例如处理结果变量)。使用skip = TRUE时应小心,因为它可能会影响后续操作的计算。

id

该步骤特有的字符串,用于标识它。

recipe 的更新版本,将新步骤添加到任何现有操作的序列中。

细节

使用此灵活步骤时,请格外小心,以避免预处理中的数据泄漏。例如,考虑转换 x = w > mean(w) 。当应用于新数据或测试数据时,此转换将使用新数据中 w 的平均值,而不是训练数据中 w 的平均值。

整理

当您 tidy() 此步骤时,将返回一个包含 terms 列的 tibble,其中包含正在转换的列。

箱重

底层操作不允许使用案例权重。

例子

library(dplyr)
recipe(~., data = iris) %>%
  step_mutate_at(contains("Length"), fn = ~ 1 / .) %>%
  prep() %>%
  bake(new_data = NULL) %>%
  slice(1:10)
#> # A tibble: 10 × 5
#>    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#>           <dbl>       <dbl>        <dbl>       <dbl> <fct>  
#>  1        0.196         3.5        0.714         0.2 setosa 
#>  2        0.204         3          0.714         0.2 setosa 
#>  3        0.213         3.2        0.769         0.2 setosa 
#>  4        0.217         3.1        0.667         0.2 setosa 
#>  5        0.2           3.6        0.714         0.2 setosa 
#>  6        0.185         3.9        0.588         0.4 setosa 
#>  7        0.217         3.4        0.714         0.3 setosa 
#>  8        0.2           3.4        0.667         0.2 setosa 
#>  9        0.227         2.9        0.714         0.2 setosa 
#> 10        0.204         3.1        0.667         0.1 setosa 

recipe(~., data = iris) %>%
  # leads to more columns being created.
  step_mutate_at(contains("Length"), fn = list(log = log, sqrt = sqrt)) %>%
  prep() %>%
  bake(new_data = NULL) %>%
  slice(1:10)
#> # A tibble: 10 × 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 
#> # ℹ 4 more variables: Sepal.Length_log <dbl>, Petal.Length_log <dbl>,
#> #   Sepal.Length_sqrt <dbl>, Petal.Length_sqrt <dbl>
源代码:R/mutate_at.R

相关用法


注:本文由纯净天空筛选整理自Max Kuhn等大神的英文原创作品 Mutate multiple columns using dplyr。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。