我有一个包含id和日期的数据集。我把今天的日期变成一个变量。
today=Sys.date()
现在我想计算数据集中的最新数据,该数据小于今天的日期。
Date=sqldf(paste0("SELECT * FROM DATA WHERE MAX(DATE) <",TODAY))
我收到错误而无法解决。
答案 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))