首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SparkR离散化变量

使用SparkR离散化变量
EN

Stack Overflow用户
提问于 2018-08-29 23:59:40
回答 1查看 106关注 0票数 1

我希望使用R对变量进行离散化,最好是SparkR,这样所需的结果将如下所示。

代码语言:javascript
复制
library(arules)

mtcars %>% mutate(bins = discretize(x = mpg, method = "interval", breaks = 4))

我查看了文档,但只能在https://spark.apache.org/docs/2.2.0/ml-features.html#bucketizer上看到非R解决方案。

请给我建议。

EN

回答 1

Stack Overflow用户

发布于 2018-09-01 09:07:34

一般来说,SparkR提供了一个非常有限的ML函数子集(计划完全支持Spark3.0,作为一个单独的R包SPARK-24359 SPIP: ML Pipelines in R,尽管像这样的简单离散化可以使用CASE ... WHEN ...语句执行。

首先计算中断:

代码语言:javascript
复制
df <- createDataFrame(mtcars)
min_max <- df %>% 
  select(min(df$mpg), max(df$mpg)) %>% 
  collect() %>% 
  unlist() 

n <- 4
breaks <- seq(min_max[[1]], min_max[[2]], length.out = n)

然后生成表达式:

代码语言:javascript
复制
bucket <- purrr::map2(
    breaks[-n], breaks[-1], 
    function(x, y) between(column("mpg"), c(x, y))) %>% 
  purrr::reduce2(
    ., seq(length(.)),
    function(acc, x, y) otherwise(when(x, y), acc), 
    .init = lit(NA))

df %>% withColumn("bucket", bucket)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52081718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档