尝试使用 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"')
我正在尝试使用 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"')