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

时间:2019-05-10 17:04:22

标签: r sqldf

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

我尝试了几种方法,但不断收到此错误,

语句中的错误:“(”附近:语法错误

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

enter image description here

这就是我想要做的

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

我想得到这样的东西

enter image description here

1 个答案:

答案 0 :(得分:1)

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