當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。