使用SparkR逐行计算

时间:2018-11-01 19:00:09

标签: r apache-spark sparkr

这是我的玩具数据框。

func scrollViewDidScroll(_ scrollView: UIScrollView) {

    let offset = scrollView.contentOffset // get the current offset
    scrollView.isUserInteractionEnabled = false // disable interaction
    scrollView.setContentOffset(offset, animated: false) // freeze the offset

}

如何使用SparkR计算按行计算,以获取var1和var2的最大值,如上面df中的第3个变量所示?如果SparkR中没有按行函数,如何获取所需的输出?

1 个答案:

答案 0 :(得分:1)

一组列中的

To get a maximum value使用SparkR::greatest

df %>% withColumn("maxOfVars", greatest(df$var1, df$var2))

以及通常情况下的高阶函数,例如aggregate(Spark 2.4或更高版本),用于组合数据。

df %>% withColumn("theLastVar", expr("aggregate(array(var1, var2), (x, y) -> y)"))

或(与版本无关)表达式的组成:

scols <- c("var1", "var2") %>% purrr::map(column)

sumOfVars <- scols %>%
  purrr::map(function(x) coalesce(x, lit(0)))  %>%
  purrr::reduce(function(x, y) x + y, .init=lit(0))

countOfVars <- scols %>% 
  purrr::map(function(x) ifelse(isNotNull(x), lit(1), lit(0))) %>%
  purrr::reduce(
    function(x, y) x + y, .init=lit(0))

df %>% withColumn("meanOfVars", sumOfVars / countOfVars)