将变量值作为参数传递给sqldf

时间:2018-03-29 06:51:26

标签: r

我有一个包含id和日期的数据集。我把今天的日期变成一个变量。

today=Sys.date()

现在我想计算数据集中的最新数据,该数据小于今天的日期。

Date=sqldf(paste0("SELECT * FROM DATA WHERE MAX(DATE) <",TODAY))

我收到错误而无法解决。

1 个答案:

答案 0 :(得分:2)

您可能需要围绕从Sys.Date()返回的值的单引号。这应该工作

TODAY <- Sys.Date()
sqldf(paste0("SELECT * FROM DATA",
        " WHERE DATE < '", TODAY, "'",
        " ORDER BY DATE DESC LIMIT 1"))

这将生成以下原始查询:

SELECT *
FROM DATA
WHERE DATE < '2018-03-29'
ORDER BY DATE DESC
LIMIT 1

此查询将返回您今天之前发生的数据中的最新记录。

请注意,使用原始连接构建SQL字符串通常很糟糕。但是,如果您只是从R控制台进行数据分析,那么它应该是可以接受的。

数据

DATA <- data.frame(DATE = c(Sys.Date() + 5:10, Sys.Date() - 5:10))