如何在不丢失原始变量的情况下离散化数字变量?

How can I discretize the numeric variables without losing the original ones?

这是我的玩具数据和代码。如何在不丢失原始变量的情况下离散化数值变量?

library(gapminder); library(tidyverse); library(tidymodels)

gapminder %>% 
  recipe(lifeExp ~ .) %>% 
  step_discretize(all_numeric(), -all_outcomes(), options = list(cuts = 10)) %>% 
  prep() %>% 
  juice()

在上面的代码中,我丢失了 pop 和 gdpPercap 的原始值,因为它们被各自的离散化版本所取代。我怎样才能同时保留:原始数值和离散变量?

其次,除了 bin01、bin02 之外,有没有办法获取 [0-100]、[101-150] 等类型的 bin,以便我知道哪个 bin 具有什么值?

不确定如何再次使用 step_discretize 和 left_joining 数据来做到这一点,但是有一个来自 arules 包的离散化函数,它用值呈现 bins。这是对我有用的。

gapminder %>% 
  mutate(across(where(is.numeric),  
      ~arules::discretize(x = .x, method = "interval", breaks = 10), 
         .names = "bin_{col}"))

如果您知道如何在食谱中执行此操作,请告诉我。