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


R recipes step_string2factor 将字符串转换为因子


step_string2factor() 会将一个或多个字符向量转换为因子(有序或无序)。

仅在特殊情况下使用此步骤(请参阅详细信息),并在使用任何 tidymodels 函数之前将字符串转换为因子。

用法

step_string2factor(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  levels = NULL,
  ordered = FALSE,
  skip = FALSE,
  id = rand_id("string2factor")
)

参数

recipe

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

...

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

role

由于没有创建新变量,因此此步骤未使用。

trained

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

levels

用于新因子的级别的选项规范。如果保留 NULL ,则将使用调用 bake 时出现的排序唯一值。

ordered

单个逻辑值;应该对因子进行排序吗?

skip

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

id

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

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

细节

什么时候应该使用此步骤?

在大多数情况下,如果您计划使用 step_string2factor() 而不设置 levels ,则最好在使用配方之前将这些字符变量转换为因子变量。

这可以使用以下方法完成dplyr用下面的代码

df <- mutate(df, across(where(is.character), as.factor))

在重采样期间,完整的值集可能不在字符数据中。然后使用 step_string2factor() 将它们转换为因子将导致级别配置错误。

如果使用 step_string2factor()levels 参数,它将把受此步骤影响的所有变量转换为具有相同的级别。因此,在定义配方时,您需要了解完整的级别集。

另请注意, prep() 有一个选项 strings_as_factors,默认为 TRUE 。应更改此设置,以便将原始字符数据应用于 step_string2factor() 。但是,此步骤也可以采用现有因子(但将保持原样)。

整理

当您 tidy() 此步骤时,将返回包含列 terms(选定的选择器或变量)和 ordered 的 tibble。

箱重

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

例子

data(Sacramento, package = "modeldata")

# convert factor to string to demonstrate
Sacramento$city <- as.character(Sacramento$city)

rec <- recipe(~ city + zip, data = Sacramento)

make_factor <- rec %>%
  step_string2factor(city)

make_factor <- prep(make_factor,
  training = Sacramento
)

make_factor
#> 
#> ── Recipe ────────────────────────────────────────────────────────────────
#> 
#> ── Inputs 
#> Number of variables by role
#> predictor: 2
#> 
#> ── Training information 
#> Training data contained 932 data points and no incomplete rows.
#> 
#> ── Operations 
#> • Factor variables from: city | Trained

# note that `city` is a factor in recipe output
bake(make_factor, new_data = NULL) %>% head()
#> # A tibble: 6 × 2
#>   city       zip   
#>   <fct>      <fct> 
#> 1 SACRAMENTO z95838
#> 2 SACRAMENTO z95823
#> 3 SACRAMENTO z95815
#> 4 SACRAMENTO z95815
#> 5 SACRAMENTO z95824
#> 6 SACRAMENTO z95841

# ...but remains a string in the data
Sacramento %>% head()
#> # A tibble: 6 × 9
#>   city       zip     beds baths  sqft type        price latitude longitude
#>   <chr>      <fct>  <int> <dbl> <int> <fct>       <int>    <dbl>     <dbl>
#> 1 SACRAMENTO z95838     2     1   836 Residential 59222     38.6     -121.
#> 2 SACRAMENTO z95823     3     1  1167 Residential 68212     38.5     -121.
#> 3 SACRAMENTO z95815     2     1   796 Residential 68880     38.6     -121.
#> 4 SACRAMENTO z95815     2     1   852 Residential 69307     38.6     -121.
#> 5 SACRAMENTO z95824     2     1   797 Residential 81900     38.5     -121.
#> 6 SACRAMENTO z95841     3     1  1122 Condo       89921     38.7     -121.
源代码:R/string2factor.R

相关用法


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