r - 在 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 中使用的函数,它只需要首先调用一个排列动词(这在本地 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)
"))
推荐阅读
- java - 为什么我不能登录?
- python - 离开加入但保持一个观察
- ios - 如何删除 SwiftUI NavigationView 中的默认导航栏空间
- javascript - 如何合并同一数组中共享相同未知键的多个对象?
- javascript - 尝试将事件列表器添加到 js 文件
- php - 我应该使用全大写来执行 MySQL 命令以使其工作吗?
- javascript - 使用 React Native Alert 确认/阻止返回按钮导航
- python - 向循环函数添加分数
- php - 如何通过 PHP 自动更改 SQL 查询的 ID?
- javascript - 如何使用 Web-Worker 加速文件传输