【发布时间】:2015-02-16 20:36:55
【问题描述】:
在带有天气信息(列:DATE、DOY、TEMPERATURE)的 SQLite 数据库上,我喜欢添加一个带有 温度总和的新列(每天 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。
谢谢 克里斯托夫
【问题讨论】:
-
使用
mtcars %>% mutate(lagged = lag(mpg, 1, order_by=carb))的简单测试似乎有效。您将什么类型的对象传送到mutate?你用的是什么 dplyr 版本? -
您能否提供一个可重现的示例,包括数据集?无论如何,从数据集中听起来您将
lag拼错为LAG -
您是否正在寻找从 1 月 1 日到当天的温度累计值?
-
@MrFlick 对象是 SQLite 数据库,@David
lag在 SQL 中转换为 LAG(SQL 不区分大小写),并且 SQL 中不存在 LAG :( @docendo thx for the tipp,但不幸的是我得到了与cumsum相同的错误,因为它似乎没有被翻译成等效的SQL -
你反对用你自己的 SQL 代码来做这件事吗?关于 sqlite 的累积总和有一些 SO 答案,似乎很简单,例如this recent one.