在 SparkR 中合并两列

Combine two columns in SparkR

在 SparkR 中合并两列的简单方法是什么?考虑以下 Spark DF:

salary_from  salary_to  position
1500         null       a
null         1300       b
800          1000       c

我想用这样的逻辑组合 salary 列。从salary_fromsalary_to取一个不为null的,如果都存在,则取中间的一个值。

salary_from  salary_to  position  salary
1500         null       a         1500
null         1300       b         1300
800          1000       c         900

有没有办法遍历每一行并应用我的逻辑,就像我在 R 中使用 apply 方法一样?

您可以使用coalesce函数:

withColumn(
  sdf, "salary",
  expr("coalesce((salary_from + salary_to) / 2, salary_from, salary_to)")
)

哪个 returns 第一个非空表达式。