首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配日期( sqldf )

匹配日期( sqldf )
EN

Stack Overflow用户
提问于 2011-08-22 18:52:09
回答 3查看 1.4K关注 0票数 1

我有一个数据框架与股票数据(日期,符号,高,低,打开,关闭,音量)。使用R和mysql以及sqldf和rmysql,我有一个唯一日期和唯一股票符号的列表。我现在需要的是循环遍历数据,并在两个指定的日期找到关闭。例如:

  • stkData包含(日期、符号、高、低、打开、关闭、卷)
  • dates包含唯一的日期
  • symbol包含唯一的符号

我想以这样的方式循环遍历sqldf语句中的列表:

代码语言:javascript
复制
'select stkData$close from stkData where symbol = symbol[k] and date = dates[j]'

kj将是环数,但我的问题是symbol[k]dates[j]部件。

sqldf无法正确地读取它们(或者我不能正确地编码)。我试过as.Dateas.character,但没有运气。我收到以下错误消息:

代码语言:javascript
复制
Error in sqliteExecStatement(con, statement, bind.data) : 
RS-DBI driver: (error in statement: near "[4,]": syntax error)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-22 19:43:38

不幸的是,就sqldf的语法而言,您还相距甚远。不能在sqldf调用中使用$[]符号,因为它们都是R语法,而不是SQL语法。这是一种完全不同的语言。所发生的情况是sqldf获取数据框架,将其导入SQLite3,执行针对结果表提供的SQL查询,然后将结果集作为数据框架导入R。SQL中没有R功能可用。

我不清楚您想要做什么,但是如果您想在一个循环中运行多个查询,您可能希望使用R函数paste()将这个SQL查询作为一个字符串来构造,这样当它到达SQLite3时,它将只是静态值,而您现在有symbol[k]dates[j]

因此,您将得到类似于以下内容的内容,但将其封装在jk的循环中

代码语言:javascript
复制
sqldf(paste('select close from stkData where symbol = ', symbol[k],
            ' and date = ', dates[j]))
票数 2
EN

Stack Overflow用户

发布于 2011-08-22 20:48:53

在将select语句传递给SQL调用方之前,可能需要将其构造为带有粘贴的字符串。类似于:

代码语言:javascript
复制
combo_kj <- expand.grid(ksym=symbol[1:k], jdates=dates[1:j])

SQLcalls <- paste('select close from stkData where symbol = ',
                   combo_kj$ksym,
                   ' and date = '
                   combo_kj$jdates,
                   sep="")

然后用您正在使用的任何代码在SQLcalls上循环。

票数 0
EN

Stack Overflow用户

发布于 2015-06-05 14:17:15

如图所示,序言sqldffn$,然后背板中的字符串将被在R中运行它们的结果所取代,而表单$variable的字符串将被该变量的内容所取代(前提是变量名仅包含单词字符)。请注意,SQL要求将字符常量放在引号中,因此请确保用引号包围回退或$variable:

代码语言:javascript
复制
fn$sqldf("select close from stkData 
   where symbol = '`symbol[k]`' and 
         date = '`dates[j]`' ")

要使用$variable语法,请尝试如下:

代码语言:javascript
复制
mysymbol <- symbol[k]
mydate <- dates[j]
fn$sqldf("select close from stkData 
   where symbol = '$mysymbol' and 
         date = '$mydate' ")

还请参见sqldf页面上的示例5:https://github.com/ggrothendieck/sqldf

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7152119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档