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"')