在带有天气信息的SQLite数据库上(colums:DATE,DOY,TEMPERATURE)我喜欢添加一个带有温度总和的新列(每日温度从1月1日到当天)。 (DOY是一年中的日。)
dplyr windows函数应该适合解决此问题。 http://cran.r-project.org/web/packages/dplyr/vignettes/window-functions.html。也许像是
mutate(TEMPERATURESUM = lag(TEMPERATURE, DOY, order_by=DATE))
但它会提供error in statement: no such function: LAG
你知道一个例子,我知道我是怎么做的吗?我不喜欢在dplyr中使用纯粹的SQL。
THX 克里斯托夫
答案 0 :(得分:1)
如果您不反对使用原始SQL代码,可以使用library(rsqlite)
:
# SQL statements we want to run
sql1 <- "
ALTER TABLE t
ADD COLUMN tempsum real;"
sql2 <- "
UPDATE t
SET tempsum = (SELECT Sum(t2.temperature)
FROM t as t2 WHERE t2.doy <= t.doy);"
dbSendQuery(conn, sql1)
dbSendQuery(conn, sql2)
这是根据此SO question改编的SQLite中的累积总和,以及example showing it works on SQL Fiddle(我了解here)。
但是我想你也可以只计算R中的累积总和并将结果写回SQLite,如果表格不是太大,那么我不确定你的问题是否具体是关于如何做这与dplyr
,或一般如何做。