我正在尝试使用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")
我想得到这样的东西
答案 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"')