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


R recipes step_mutate 使用 dplyr 添加新变量


step_mutate() 创建配方步骤的规范,该步骤将使用 dplyr::mutate() 添加变量。

用法

step_mutate(
  recipe,
  ...,
  role = "predictor",
  trained = FALSE,
  inputs = NULL,
  skip = FALSE,
  id = rand_id("mutate")
)

参数

recipe

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

...

Name-value 表达式对。请参阅dplyr::mutate()

role

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

trained

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

inputs

... 的引用。

skip

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

id

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

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

细节

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

当定义新变量的表达式中引用用户全局环境中的对象时,最好使用准引用(例如 !! )将该对象的值嵌入到表达式中(以便在会议)。请参阅示例。

如果前面的步骤删除了 step_mutate() 中按名称选择的列,则使用 prep() 估计配方时将会出错。

整理

当您 tidy() 此步骤时,将返回带有 values 列的 tibble,其中包含字符串形式的 mutate() 表达式(并且不可重新解析)。

箱重

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

也可以看看

例子

rec <-
  recipe(~., data = iris) %>%
  step_mutate(
    dbl_width = Sepal.Width * 2,
    half_length = Sepal.Length / 2
  )

prepped <- prep(rec, training = iris %>% slice(1:75))

library(dplyr)

dplyr_train <-
  iris %>%
  as_tibble() %>%
  slice(1:75) %>%
  mutate(
    dbl_width = Sepal.Width * 2,
    half_length = Sepal.Length / 2
  )

rec_train <- bake(prepped, new_data = NULL)
all.equal(dplyr_train, rec_train)
#> [1] TRUE

dplyr_test <-
  iris %>%
  as_tibble() %>%
  slice(76:150) %>%
  mutate(
    dbl_width = Sepal.Width * 2,
    half_length = Sepal.Length / 2
  )
rec_test <- bake(prepped, iris %>% slice(76:150))
all.equal(dplyr_test, rec_test)
#> [1] TRUE

# Embedding objects:
const <- 1.414

qq_rec <-
  recipe(~., data = iris) %>%
  step_mutate(
    bad_approach = Sepal.Width * const,
    best_approach = Sepal.Width * !!const
  ) %>%
  prep(training = iris)

bake(qq_rec, new_data = NULL, contains("appro")) %>% slice(1:4)
#> # A tibble: 4 × 2
#>   bad_approach best_approach
#>          <dbl>         <dbl>
#> 1         4.95          4.95
#> 2         4.24          4.24
#> 3         4.52          4.52
#> 4         4.38          4.38

# The difference:
tidy(qq_rec, number = 1)
#> # A tibble: 2 × 3
#>   terms         value               id          
#>   <chr>         <chr>               <chr>       
#> 1 bad_approach  Sepal.Width * const mutate_p75TX
#> 2 best_approach Sepal.Width * 1.414 mutate_p75TX
源代码:R/mutate.R

相关用法


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