SparkR:如何合并多个"when"/"otherwise"多个条件

SparkR: How to merge multiple "when"/"otherwise" multiple conditions

我正在尝试基于多个条件创建一个新列,但我发现我不能使用多个 when 子句,否则只能使用一个子句,我不得不使用如下所示的东西:

 test1 <- test %>%  withColumn("newCol1", otherwise(when(column("oldCol1") == 1, lit("one")), 
                                                    otherwise(when(column("oldCol1") == 2,lit("two")),
                                                              lit("other")))) %>%
  select(column("oldCol1"), column("newCol1"))

这给了我预期的结果:

     oldCol1 newCol1
1          1     one
2          1     one
3          2     two
4          4   other
5          4   other
6          1     one

在SparkR中使用WHEN函数有没有更清晰的方法?

您可以尝试 coalesce-ing when 语句:

test1 <- test %>% withColumn(
    "newCol1", 
    coalesce(
        when(column("oldCol1") == 1, lit("one")),
        when(column("oldCol1") == 2, lit("two")),
        lit("other")
    )
) %>% select(column("oldCol1"), column("newCol1"))