尝试使用 sqldf 在 r 中执行 运行 总和时出错

error when trying to do a running sum in r with sqldf

我正在尝试使用 sqldf 在 R 中计算 运行 总和。

我尝试了几种方法,但总是出现此错误,

语句错误:靠近“(”:语法错误

我有一个非常简单的示例数据框 DF <- data.frame(col1 = 1:4, id = 1:12)

这就是我想要做的

install.packages('sqldf')
require(sqldf)
sqldf("SELECT col1, SUM(col1) OVER (ORDER BY id) AS runningsum FROM DF")

我想要这样的东西

1) sqlite 将默认的 sqlite 后端设置为 sqldf,该语法不受支持,但这有效:

library(sqldf)

sqldf("select a.*, sum(b.col1) as runningSum
  from DF as a
  left join DF b on a.id >= b.id
  group by a.id")

给予:

   col1 id runningSum
1     1  1          1
2     2  2          3
3     3  3          6
4     4  4         10
5     1  5         11
6     2  6         13
7     3  7         16
8     4  8         20
9     1  9         21
10    2 10         23
11    3 11         26
12    4 12         30

2) H2 使用 H2 后端我们可以这样做:

library(RH2)
library(sqldf)

sqldf("select *, set(@i, ifnull(@i, 0) + col1) as runningSum from DF")

3) PostgreSQL 使用 PostgreSQL 后端可以这样完成:

library(RPostgreSQL)
library(sqldf)

sqldf('select
  *,
  sum(col1) over (order by id asc rows between unbounded preceding and current row)
from "DF"')