在sparklyr中计算累计和
Calculating cumulative sum in sparklyr
我如何计算 sparklyr 中的累计和?
dplyr:
iris %>% group_by(Species) %>% mutate(col = cumsum(Sepal.Length))
cumsum
不是 sparklyr 中包含的函数,我如何在 sparklyr 中重现它?
我认为火花 SQL 会是这样的?:
SELECT
*,
sum(Sepal.Length) OVER (PARTITION BY Species ORDER BY index) as col
FROM
iris
更新: cumsum
是一个可以在 sparklyr 中使用的函数,它只需要先调用一个 arrange 动词(这在本地 r 中不是必需的)
iris %>%
sdf_copy_to %>%
group_by(Species) %>%
arrange(Sepal.Length) %>%
mutate(col = cumsum(Sepal.Length))
如果您知道正确的语法,您可以在 sparklyr 中编写 SQL,在这种情况下,原始 SQL(假设您的索引是 Sepal_Length)是:
SELECT *
, SUM(Sepal_Length) OVER (PARTITION BY Species ORDER BY Sepal_Length) AS CumSum
FROM iris
如果你想在 sparklyr 中做到这一点,你只需要做:
iris2 <- iris %>%
mutate(CumSum = sql("
SUM(Sepal_Length) OVER (PARTITION BY Species ORDER BY Sepal_Length)
"))
问题更新中的示例代码是无效语法,使用 SQL 非常麻烦。我相信以下才是真正的 sparklyr 方法:
library(tidyverse)
library(sparklyr)
data("iris")
sc <- spark_connect()
iris %>%
sdf_copy_to(sc=sc, overwrite=T) %>%
group_by(Species) %>%
arrange(Sepal_Length) %>%
mutate(col = cumsum(Sepal_Length)) %>%
ungroup
我如何计算 sparklyr 中的累计和?
dplyr:
iris %>% group_by(Species) %>% mutate(col = cumsum(Sepal.Length))
cumsum
不是 sparklyr 中包含的函数,我如何在 sparklyr 中重现它?
我认为火花 SQL 会是这样的?:
SELECT
*,
sum(Sepal.Length) OVER (PARTITION BY Species ORDER BY index) as col
FROM
iris
更新: cumsum
是一个可以在 sparklyr 中使用的函数,它只需要先调用一个 arrange 动词(这在本地 r 中不是必需的)
iris %>%
sdf_copy_to %>%
group_by(Species) %>%
arrange(Sepal.Length) %>%
mutate(col = cumsum(Sepal.Length))
如果您知道正确的语法,您可以在 sparklyr 中编写 SQL,在这种情况下,原始 SQL(假设您的索引是 Sepal_Length)是:
SELECT *
, SUM(Sepal_Length) OVER (PARTITION BY Species ORDER BY Sepal_Length) AS CumSum
FROM iris
如果你想在 sparklyr 中做到这一点,你只需要做:
iris2 <- iris %>%
mutate(CumSum = sql("
SUM(Sepal_Length) OVER (PARTITION BY Species ORDER BY Sepal_Length)
"))
问题更新中的示例代码是无效语法,使用 SQL 非常麻烦。我相信以下才是真正的 sparklyr 方法:
library(tidyverse)
library(sparklyr)
data("iris")
sc <- spark_connect()
iris %>%
sdf_copy_to(sc=sc, overwrite=T) %>%
group_by(Species) %>%
arrange(Sepal_Length) %>%
mutate(col = cumsum(Sepal_Length)) %>%
ungroup